gpt4 book ai didi

Python - 在命名它包装的函数后调用包装函数

转载 作者:行者123 更新时间:2023-12-01 05:26:23 25 4
gpt4 key购买 nike

老实说,我不知道这是好是坏,中立还是什么。

def foo():
return "foo called"

def bar():
return "BAR CALLED"

def wrap(func):
def _(*args, **kwargs):
try:
func.counter += 1
except:
func.counter = 0
print "The count is %d" % func.counter
return func(*args, **kwargs)
return _

>>> foo = wrap(foo)
>>> bar = wrap(bar)
>>> foo()
'The count is 0'
'foo called'
>>> foo()
'The count is 1'
'foo called'
>>> bar()
'The count is 0'
'BAR CALLED'

到目前为止,一切都很好——函数只是被包装起来,没什么大不了的。这是我不知道是否要考虑某个功能的一点。

>>> foo
<function _ at 0x100499ed8>
>>> _()
The count is 2
'foo called'
>>> bar
<function _ at 0x10049f320>
>>> _()
The count is 1
'BAR CALLED'
>>>

也许我对这里的幕后了解太少,但是Python在内存中有两个名为_的包装函数,用户只需输入名称就可以在它们之间“切换”它所包装的函数的名称。

这是一个功能吗?如果是,它的主要应用是什么?或者,如果不是,最好忘记这一点,因为尝试将这种行为特征化只是一个坏主意?我的熟练工猜测这是唯一可行的,因为Python中没有真正的闭包(这可能将其放在我们都是成年人下,我不应该尝试实际这样做),但那就是未经证实的猜测。

最佳答案

这是Python解释器的快捷方式。最后一个表达式的计算结果被分配给_,以便您可以在后续操作中使用它。

喜欢:

>>> 5 + 7
12
>>> _ * 2
24
>>> _ + 3
27

请注意,这仅在交互式 shell 中起作用,而不是在脚本中,并且仅当您尚未定义 _ 时才有效。

关于Python - 在命名它包装的函数后调用包装函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21269527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com