【Python】匿名函数、偏函数、函数命名空间

【Python】匿名函数、偏函数、函数命名空间,第1张

匿名函数

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/569818.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存