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

匿名函数

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二琳爱吃肉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值