可变参数
可变参数指的是“可变数量的参数”。分两种情况:
- *param(一个星号),将多个参数收集到一个“元组”对象中。
- **param(两个星号),将多个参数收集到一个“字典”对象中。
强制命名参数
在带星号的“可变参数”后面增加新的参数,必须在调用的时候“强制命名参数”。因为可变参数数量可变,如果不强制命名,会将后面传递的参数值收集,导致后面的参数没有值。
def f1(*a,b,c):
print(a,b,c)
#f1(67,34,46) #会报错。由于 a 是可变参数,将 67,34,46 全部收集。造成 b 和 c 没有赋值。
f1(67,b=34,c=46)
运行结果 注意细节
(67,) 34 46
lambda 表达式和匿名函数
lambda 表达式的基本语法:
lambda arg1,arg2,arg3… : <表达式>
arg1/arg2/arg3 为函数的参数。<表达式>相当于函数体。运算结果是:表达式的运算结果。
f = lambda a,b,c:a+b+c
print(f)
print(f(2,3,4))
g = [lambda a:a*2,lambda b:b*3,lambda c:c*4]
print(g[0](6),g[1](7),g[2](8))
运行结果
<function <lambda> at 0x0000000002BB8620>
9
12 21 32
eval()函数
功能:
将字符串 str 当成有效的表达式来求值并返回计算结果。
语法:
eval(source[, globals[, locals]]) -> value
参数:
source:一个 Python 表达式或函数 compile()返回的代码对象
globals:可选。必须是 dictionary
locals:可选。任意映射对象