匿名函数
lamdba表达式实际构建的是一个函数对象 lamdba表达式的优点 1、省去定义函数的过程,使得代码更加简练 2、不需要考虑命名,省去起名字的时间 3、某些时候lamdba表达式更容易理解 lamdba表达式的规则 1、如果只有一个表达式,则必须要有返回值 2、可以没有参数,也可以有一个或多个参数 3、不能有return
# 匿名函数是不再用def语句定义的标准函数。Python使用lambda创建匿名函数
def f1(x, y):
return x + y
f = lambda x, y: x + y
print(f(2, 3))
# lamdba表达式实际构建的是一个函数对象
# lamdba表达式的优点
# 1、省去定义函数的过程,使得代码更加简练
# 2、不需要考虑命名,省去起名字的时间
# 3、某些时候lamdba表达式更容易理解
# lamdba表达式的规则
# 1、如果只有一个表达式,则必须要有返回值
# 2、可以没有参数,也可以有一个或多个参数
# 3、不能有return
偏函数
偏函数通过设置参数的默认值,降低函数调用的难度。 比如int()默认是将字符串转化为十进制数,可以通过设置base=2,8,16改变转换成的对应的进制数(二进制、八进制、十六进制) 当函数的参数数量太多,需要简化时,可以借助functools.partial创建一个新函数,这个新的函数可以固定住原函数的部分参数,从而使得函数调用更加方便。???????????
# 偏函数通过设置参数的默认值,降低函数调用的难度
# 比如int()默认是将字符串转化为十进制数,可以通过设置base=2,8,16改变转换成的进制数
# 当函数的参数数量太多,需要简化时,可以借助functools.partial创建一个新函数,这个新的函数可以固定柱原函数的部分参数,从而使得函数调用更加方便
from functools import partial
print(int('123456', base=8))
int2 = partial(int, base=2)
print(int2('1001001'))
int3 = partial(int, base=8)
print(int3('2372'))
函数命名空间——作用域
作用域分为局部作用域和全局作用域 局部作用域在函数内部 定义在函数外的变量具有全局作用域 Python会首先搜索局部命名空间(local namespace),在搜索全局命名空间(global namespace),之后在搜索内置名空间(built-in namespace),最后还是找不到输出NameError异常 local>global>built-in(int string def print)
# 作用域分为局部作用域和全局作用域
# 局部作用域在函数内部
# 全局作用域 定义在函数外的变量
# Python会首先搜索局部命名空间(local namespace),在搜索全局命名空间(global namespace),之后在搜索内置名空间(built-in namespace),最后还是找不到输出NameError异常
# local>global>built-in(int string def print)
x = 100
y = 10
def changex():
x = 200
global y
y = 20
return x, y
print(x)
print(y)
print(changex())
print(x)
print(y)
更多代码:
?GitHub - harbinailin/Python: openpyxl&xlrd
|