gpt4 book ai didi

python - 如何在 Python 中定义全局函数?

转载 作者:太空狗 更新时间:2023-10-29 17:23:39 24 4
gpt4 key购买 nike

有没有办法从一个类中(或者从另一个函数中,事实上)定义一个全局函数?类似于定义全局变量。

最佳答案

函数被添加到当前命名空间,就像添加任何其他名称一样。这意味着您可以在函数或方法中使用 global 关键字:

def create_global_function():
global foo
def foo(): return 'bar'

这同样适用于类主体或方法:

class ClassWithGlobalFunction:
global spam
def spam(): return 'eggs'

def method(self):
global monty
def monty(): return 'python'

不同之处在于 spam 将立即定义为顶级类主体在导入时执行。

global 的所有用途一样,您可能需要重新考虑问题并找到另一种方法来解决它。例如,您可以返回这样创建的函数。

演示:

>>> def create_global_function():
... global foo
... def foo(): return 'bar'
...
>>> foo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'foo' is not defined
>>> create_global_function()
>>> foo
<function foo at 0x102a0c7d0>
>>> foo()
'bar'
>>> class ClassWithGlobalFunction:
... global spam
... def spam(): return 'eggs'
... def method(self):
... global monty
... def monty(): return 'python'
...
>>> spam
<function spam at 0x102a0cb18>
>>> spam()
'eggs'
>>> monty
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'monty' is not defined
>>> ClassWithGlobalFunction().method()
>>> monty()
'python'

关于python - 如何在 Python 中定义全局函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27930038/

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