这是代码吗
GLOBAL_VERSION = '1'
def get_version():
return GLOBAL_VERSION
mod_version=get_version()
等于
GLOBAL_VERSION = '1'
mod_version=lambda **_: GLOBAL_VERSION
是不是?
非常感谢!
答案 0 :(得分:1)
不,他们不是。
在第一个版本中,您有一个全局变量(GLOBAL_VERSION
),一个函数(get_version
)和另一个全局变量(mod_version
)。
在第二个中你有一个全局变量(GLOBAL_VERSION
)和一个函数(mod_version
)。
两者之间最重要的区别可能是mod_version
设置为第一个str
'1'
和返回str
'1'
的函数在第二个。
绝对不一样。
旁注如果lambda不需要任何参数,请不要定义任何参数:
some_func = lambda: GLOBAL_VERSION
答案 1 :(得分:0)
如前所述,lambdas与函数不同。差异的一个很好的例子是尝试pickle
时。函数是pickleable,但lambdas不是:
import pickle
def func():
return 0
lam = lambda: 1
print(func())
print(lam())
print(pickle.dumps(func))
print(pickle.dumps(lam))
此代码将打印0
,1
,帮助其找到func
,然后在最后一行(Can't pickle <function <lambda> at 0x7fa30118e048>: attribute lookup <lambda> on __main__ failed
)上显示错误。