可变参数
可变参数指的是“可变数量的参数”。分两种情况:1. *param(一个星号),将多个参数收集到一个“元组”对象中。2. **param(两个星号),将多个参数收集到一个“字典”对象中。3. 在带星号的“可变参数”后面增加新的参数,必须在调用的时候“强制命名参数”。
def fun1(a, b, *c):
print(a, b, c)
def fun2(a, b, *c, **d):
print(a, b, c, d)
def fun3(*a, b, c):
print(a, b, c)
fun1(1, 2, 5, 6) # 1 2 (5,6)
fun2(1, 2, 5, name = 'zhangsan', sex = 'male') # 1 2 (5,) {'name': 'zhangsan', 'sex': 'male'}
# fun3(1, 3, 8)会报错
fun3(1, b = 3, c = 8) # (1,) 3 8
lambda 表达式和匿名函数
1. lambda 表达式可以用来声明匿名函数。lambda 函数是一种简单的、在同一行中定义函数的方法。lambda 函数实际生成了一个函数对象。2. lambda 表达式只允许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是函数的返回值。
lambda 表达式的基本语法如下:
lambda arg1,arg2,arg3... : <表达式>
其中arg1/arg2/arg3 为函数的参数,<表达式>相当于函数体,运算结果是表达式的运算结果。
g = [lambda a: a*2, lambda b: b*3, lambda c: c*4] # g是函数对象的一个列表
print(g) # [<function <lambda> at 0x00000206E022D268>,
# <function <lambda> at 0x00000206E0573840>,
#<function <lambda> at 0x00000206E06026A8>]
print(g[0](6),g[1](7),g[2](8)) # 12 21 32
eval()函数
功能:将字符串 str 当成有效的表达式来求值并返回计算结果。语法: eval(source[, globals[, locals]]) -> value参数:source:一个 Python 表达式或函数 compile()返回的代码对象globals:可选。必须是 dictionary,指某个字典对象里的’键‘变量locals:可选。任意映射对象
s = "print('abcde')"
eval(s) # abcde
a = 10
b = 20
dict1 = {'a': 100, 'b': 200}
print(dict1) # {'a': 100, 'b': 200}
d = eval("a+b", dict1)
print(d) # 300