内置函数 闭包
Posted beichen123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内置函数 闭包相关的知识,希望对你有一定的参考价值。
内置函数(二)
内置函数
1.abs( )
print([abs(i) for i in lst])
# 绝对值 -- 返回的都是正数
2.enumerate( )
[(0,1)(1,2)(2,3)]
print([i for i in enumerate(lst,10)])
# 枚举("可迭代对象","序号的起始值") 默认的起始值是 0
3.max( )
print(max([1,2,3,4,56,7,8]))
# 求最大值
print(max([1,2,-33,4,5],key=abs))
# key指定查找最大值的规则
4.min( )
print(min([1,2,3,4,-56,7,8]))
# 求最小值
5.sum( )
print(sum([1,2,3,4,5],100))
# 求和
6.
python3 中:
range( )
g = range(0,10)
g.__iter__()
# 范围 本身是一个可迭代对象 有__iter__()方法
python2 中:
range( )
# 获取的是一个列表
Xrange( )
# 获取的是一个可迭代对象
7.open( )
# 文件操作
8.print( )
print(sep=" ",end="\n" )
print(1,2,3,sep=" ")
# sep是多个元素的连接符
9.len( )
# 公共方法,求长度的函数(除数字和bool值)
10.list( )
# 列表
11.dict( )
print(dict((1,2),(2,3)(3,4)))
print(dict([i for i in enumerate(range(20),1)]))
# 字典
12.zip( )
lst = [1,2,3,4,5]
lst1 = ["a","b","c","d","f","e"]
print(dict(list(zip(lst,lst1))))
# 拉链 -- 按照最少的进行合并
13.dir( )
print(dir(list))
# 查看当前函数的方法
匿名函数
f = lambda x,y:(x,y)
print(f(1,2))
print(f.__name__)
print((lambda x:x)(2)) # 同一行定义 同一行调用
lambda # 关键字 -- 定义函数
x,y # 形参
:x+y # 返回值 -- 只能返回一个数据类型
示例:
lst = [lambda i:i*i for i in range(10)]
print(lst[2](2))
# 4
# 拆解
lst = []
for i in range(10):
def func(i):
return i*i
lst.append(func)
print(lst[2](2))
示例2:
lst = [lambda :i*i for i in range(10)]
print(lst[2]())
# 81
# 拆解
lst = []
for i in range(10):
def func():
return i*i
lst.append(func)
print(lst[2]())
# 一行函数
# 形参可以不写
# 返回值必须要写,返回值只能返回一个数据类型
内置函数(重要)
1.format( )
print(format(13,">20"))
# 右对齐
print(format(13,"<20"))
# 左对齐
print(format(13,"^20"))
# 居中
print(format(13,"08b"))
# 2进制
print(format(13,"08d"))
# 10进制
print(format(13,"08o"))
# 8进制
print(format(12,"08x"))
# 16进制
2.filter( )
# 过滤
lst = [1,2,3,4,5,6]
def func(s):
return s > 3
print(list(filter(func,lst)))
# func就是自己定义一个过滤条件,lst 要迭代的对象
lst = [1,2,3,4,5,6,7]
print(list(filter(lambda x:x % 2 == 1,lst)))
3.map( )
print(list(map(lambda x:x*x,[1,2,3,8,4,5])))
# 对象映射
# 对可迭代对象中的每个元素进行加工
4.reverse( )
reversed( )
# 两者都是反转 前者在源数据上进行反转 后者开辟新空间进行反转,不影响源数据
5.sort( )
sorted( )
# 两者都是排序 前者在源数据上进行排序 后者开辟新空间进行排序,不影响源数据
lst = [1,23,34,4,5,213,123,41,12,32,1]
print(sorted(lst))
print(lst)
# 升序
lst = [1,23,34,4,5,213,123,41,12,32,1]
print(sorted(lst,reverse=True))
# 降序
dic = "key":1,"key1":2,"key3":56
print(sorted(dic,key=lambda x:dic[x],reverse=True))
# 指定key的排序规则
6.reduce( )
from functools import reduce
print(reduce(lambda x,y:x+y,[1,2,3,4,5]))
# 累计算
闭包
def func():
a = 1
def f1():
def foo():
print(a)
return foo
return f1
ret = func() # 或者直接 func()()()
a = ret()
a()
# 在嵌套函数内,使用非全局变量(且不是本层变量) -- 就是闭包
# print(foo()()().__closure__)判断是否闭包
了解:
print(ret.__code__.co_freevars)
# 获取的是自由变量
print(ret.__code__.co_varnames)
# 获取的是局部变量
闭包的作用:
1.保证数据的安全性
2.装饰器
以上是关于内置函数 闭包的主要内容,如果未能解决你的问题,请参考以下文章