Pyhton基础之函数参数及其匹配
参数传递
- 位置关键字:位置对应,关键字对应;位置参数(左),关键字参数(右);
- 使用默认值:无默认值(左),默认值(右);
-
def f(*x):
print x
if __name__ =='__main__':
f(1,0,3,2)
'''(1, 0, 3, 2)'''
def f(**x):
print x
if __name__ =='__main__':
f(x=1,y=2)
'''{'y': 2, 'x': 1}'''
def f(x,y=10,*z):
print x,y,z
if __name__ =='__main__':
f(1,3,5,6)
'''1 3 (5, 6)'''
def f(*x,**y):
print x,y
if __name__ =='__main__':
m=1;n=2;q=3
f(m,n,q,i=9,j=4)
'''(1, 2, 3) {'i': 9, 'j': 4}'''
- x-->返回元组,接收位置参数;*x-->接收关键字参数;
- 可变参数解包
def f(x,y,z):
print x,y,z
if __name__ =='__main__':
ll = ['Sun', 'Mon', 'Thues']
f(*ll)
'''Sun Mon Thues'''
-
函数参数顺序:位置,任意位置,任意关键字
-
lambda是一个单个表达式而非语句,也不是代码块
- lambda支持使用默认参数
- lambda args: expression;args:以逗号分隔的参数列表,expression:用到agrs中各参数的表达式
- lambda用途指定短小的回调函数,返回一个函数
-
ll=[(lambda x:x*2),(lambda y:y*3)]
for i in ll:
print i(4)
'''
8
12
'''
- 函数闭包:lexical closure
- 例子1
def func1(x):
def func2(y):
return y**x
return func2
f=func1(3)
print f(2)
print f(3)
'''
8
27
'''
- 例子2
def func1(x,y):
def func2(m,n):
return "(%d,%d),(%d,%d)"%(x,y,m+x,n+y)
return func2
f=func1(3,2)
print f(2,2)
'''
(3,2),(5,4)
'''
- 生成器转换成列表
for i in (j**2 for j in range(1,10)):
print i
l=list (i**2 for i in range(1,10))
print l
'''
1
4
9
16
25
36
49
64
81
[1, 4, 9, 16, 25, 36, 49, 64, 81]
'''
- 生成器
- 例1
def Num(x):
y=0
while y<=x:
yield y
y+=1
g=Num(10)
print type(g)
print g.next()
print g.next()
print g.next()
print g.next()
'''
<type 'generator'>
0
1
2
3
'''