1、 收集参数(可变参数)
- 将不确定的参数个数,打包成元组,调用的时候需要关键字指定
def test1(* p1, extra = "8"):
print(len(p1))
print(extra)
def test2 (* p2):
print(len(p2))
print(p2[1]) #解包后才能获取
a = [1,2,3,4,5,6]
test1(a)
test2(*a) #解包
>>>
1
8
6
2
2、所有函数都有返回值
- 不写return语句, 默认return None
def hello():
print("hello! ")
print(hello())
>>>
hello!
None
3、 不能在函数中修改全局变量,函数会在函数内部新建一个名字一样的局部变量替换掉,如果需要修改,需要在加上关键字global
global count
- nonlocal关键字,可以修改外部函数里的局部变量
def hello():
x = 5
def fun():
nonlocal x
x *= 5
return x
return fun #返回函数无()
print(hello()())
>>>
25
4、lambda表达式,不用考虑命名,
g = lambda x, y = x+y
5、filter() 和 map()
-
filter(),第一个参数可以是函数,也可以是None就会将第二个可迭代的数据里为Ture的筛选出来
list(filter(None,[1,0,False,Ture])) #结果为[1,Ture]
list(filter(lambda x: x%2 , range(10))) # 获取到奇数
-
map() ,第一个函数,第二为可迭代序列,返回所有加工后的元素构成的新序列
list(map(lambda x: x*2 , range(10))) #结果为 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
网友评论