参数匹配
- 一般来讲是位置匹配
- 如下为关键字匹配
def f(x,y,z):
print(x,y,z)
f(y=1,z=2,x=3)
3 1 2
- 默认值
def f(x, y=2, z=3):
print(x, y, z)
f(1)
1 2 3
def f(x, y=2, z=3):
print(x, y, z)
f(1,z=5)
1 2 5
- 当变量数量不一定时,将其用*转化为元组:
def f(*a):
return sum(a)/len(a)
res = f(67,89,92)
print(res)
82.66666666666667
- **转化为字典表
def f(**x):
print(x)
f(a=1,b=2)
{'a': 1, 'b': 2}
lambda表达式(定义匿名函数):
相当于:def f()=lambda
def f(x,y):
return x+y
print(f(1,2))
3
f2 = lambda x,y: x+y
print(f2(1,2))
3
def f(x):
print('write your name:',x)
def l(y):
print('write your english name',y)
def l(x):
print('write your english name',y)
while True:
x = input('write down your name:')
if x == 'stop':
break
language = input('choose:c or e')
if language == 'c':
f(x)
elif language == 'e':
l(x)
write down your name:>? tom
choose:c or e>? c
write your name: tom
def f(x):
print('hello:',x)
def l(x):
print('hey:',x)
a = f
a('lily')
hello: lily
a = l
a('lily')
hey: lily
- 这个为什么不对
def f(x):
print(x)
def l(x):
print(x)
def h(x):
print(x)
d = {'a': f, 'b': l, 'c': h}
while True:
x = input('your name is:')
if x == 'stop':
break
language = input('language:a/b/c')
d.get('language',f)(x)
your name is:>? lily
language:a/b/c>? a
your name is:>? lily
def f(x):
print(x)
def t(bala, x):
bala(x)
t(f, 'lily')
lily
方法二:
def t(bala, x):
bala(x)
t(lambda x: print(x), 'lily')
lily
高级工具
map()
方法一:
l = list(range(1,4))
print(l)
[1, 2, 3]
e = []
for x in l:
e.append(x**2)
print(e)
[1, 4, 9]
方法二:
e = [x**2 for x in l]
print(e)
[1, 4, 9]
方法三:
e = list(map(lambda n:n**2,l))
print(e)
[1, 4, 9]
filter()
方法一:
l = list(range(1,4))
print(l)
[1, 2, 3]
def p(x):
return x%2 == 0
e = list(filter(p,l))
print(e)
[2]
方法二
e = list(filter(lambda n:n%2 == 0,l))
print(e)
[2]