文章目录
函数参数
函数参数的匹配方法:
- 位置匹配 (默认)
- 键值匹配
- 默认值
# 键值匹配
def hello(name=n, age=a):
print('name:', name)
print('age:', age)
hello(name='tom', age=12)
# name:tom
# age:12
# 默认值
def hello(name='tom', age=12):
print('name:', name)
print('age:', age)
hello()
# name:tom
# age:12
元祖传参,字典传参
元祖传参:传元祖作为变量
# 元祖 *awgs
def avg(*score):
return sum(score)/len(score)
# 直接使用
result = avg(88,89,90)
# 传入 *元祖
socre = (88,89,90)
result = avg(*score)
字典传参:传字典作为变量
def display(**emp):
print(emp)
# 直接使用
display(name='tom',age=12,job='dev')
# 传入 **字典
d ={name:'tom',age:12,job:'dev'}
display(**d)
lambda 表达式
lambda函数可以赋值给变量 不带括号 带括号表示立即执行。
l = lambda :print('hello')
l() # hello
n = lambda x:print('hello', x)
n('tom') # hello tom
# 取偶数应用
num = [1,2,3,4,5,6,7]
res = filter(lambda n:n%2==0,num)
print(list(res)) # [2, 4, 6]
lambda 实例
def hello_english(name):
print('hello', name)
def hello_japanese(name):
print('o ha yo', name)
# python字典模拟siwtch
operation = {
'e': hello_english,
'c': hello_chinese,
'j': hello_japanese,
'r': lambda name: print('привет', name)
}
while True:
name = input('请输入姓名:\n')
if name == 'stop':
break
language = input('请选择语言版本:\n c=> 中文版\n e=> 英文版\n j=> 日文版\n r=> 俄文版')
f = lambda name: print('привет')
if language == 'c':
hello_chinese(name)
elif language == 'e':
hello_english(name)
elif language == 'j':
hello_english(name)
elif language == 'r':
# f(name)
(lambda name : print('привет', name))(name)
operation.get(language, hello_chinese)(name)
# 可以直接传入函数
def hello(action, name):
action(name)
hello(hello_english,'Tom')
# 传入lambda函数
hello(lambda name: print('привет', name),'Tom')