gpt4 book ai didi

python - "Python closure"适用于函数对象吗?

转载 作者:行者123 更新时间:2023-12-01 04:18:46 25 4
gpt4 key购买 nike

我在同一个文件夹(IDE Pycharm)中有 2 个 py 文件:

module1.py 包含:

def test_func():
return "test_func"

class test_class(object):
def __init__(self):
self._test = test_func()

driver.py 包含:

from module1 import test_class
obj = test_class()
print obj._test

我预计 driver.py 会失败,因为类实例化需要 test_func() 在范围内。

令我惊讶的是它没有失败。我不知道为什么(事实上,Stack Overflow 上有一些帖子询问如何使函数全局可在类内部使用)。

函数对象上有“闭包”之类的东西吗?

我的“想象的问题”和这个问题有什么区别? create a global function in python

编辑

如下所述,SO 问题与调用 sys.exit 有关。它与每个所说的函数范围无关。

最佳答案

test_func 在类实现的“范围内”。由于未导入,因此从 driver.py 中看不到它。 Python 使用词法作用域,因此作用域是在编译时确定的。 module1.py 中的所有内容都可用于 test_class 的实现,无论从何处调用。 Wikipedia article on 作用域解释了词法作用域和动态作用域之间的区别。

关于python - "Python closure"适用于函数对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33990755/

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