函数:
函数文档:
>>> def myfun(name):
'nihaoa'
print('hi'+ name +'hello')
>>> myfun.__doc__
'nihaoa'
>>> help(myfun)
Help on function myfun in module __main__:
myfun(name)
nihaoa
关键字参数:
>>> def myfun(name,words):
print(name + '->' + words)
>>> myfun('asd','fds')
asd->fds
>>> myfun(words='fds',name='name')
name->fds
默认参数:
>>> def myfun(name='asd',words='fds'):
print(name+'->''words')
>>> myfun()
asd->words
>>> myfun('gg')
gg->words
>>> myfun('gg','pp')
gg->words
收集参数:
>>> def myfun(*params):
print('参数的长度是',len(params));
print('第二个参数是',params[1]);
>>> myfun('aa',1,234,5,567)
参数的长度是 5
第二个参数是 1
>>>def myfun(*params,arg):
print('参数的长度是',len(params));
print('第二个参数是',params[1]);
>>> myfun(1,2,3,5,'12sdf',34,arg='haha')
参数的长度是 6
第二个参数是 2
在函数中试图修改全局变量时,python会自动创建一个和全局变量
名字一样的局部变量,结果会和预期的不一样
不要在函数内部去修改全局变量 可以在函数中访问全局变量
如果要在函数中修改全局变量 则要用global定义
闭包函数:内部函数参数引用外部函数
>>> def FunX(x):
def FunY(y):
return x * y
return FunY
>>> i = FunX(8)
>>> i
>>> type(i)
>>> FunX(8)(5)
40
>>> i(5)
40
>>> def Fun1():
x = [5]
def Fun2():
x[0] *= x[0]
return x[0]
return Fun2()
>>> Fun1()
25
用nonlocal 可以用作声明(可以理解为把nonlocal定义的数为全局变量,
而没定义可以理解为是局部变量)
>>> def Fun1():
x = 5
def Fun2():
nonlocal x
x *= x
return x
return Fun2()
>>> Fun1()
25
lambda :
>>> g = lambda x : 2*x+1
>>> g(5)
11
>>> g = lambda x,y: x+y
>>> g(1,2)
3
lambda优点:省下函数定义的过程,这样可以不需要专门写一个函数再进行调用,
使用lambda就可以使代码更加精简. 也可以省下取名的时间.
filter(funtion or None;iterable):
>>> list(filter(None,[1,2,0,False,True]))
[1, 2, True]
#filter函数会过滤掉所有非true的数
>>> def odd(x):
return x%2
>>> temp = range(10)
>>> show = list(filter(odd,temp))
>>> show
[1, 3, 5, 7, 9]
>>>
lambda 和 filter 结合
>>> list(filter(lambda x: x % 2 ,range(10)))
[1, 3, 5, 7, 9]
>>>
map(): ---->映射
>>> list(map(lambda x : x*2,range(10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]