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

佛朗明哥舞

有没有一种方法可以将一个函数定义为在一个类中是全局的(或者,实际上是在另一个函数中)?类似于定义全局变量。

马丁·彼得斯(Martijn Pieters)

将函数添加到当前名称空间,就像将添加任何其他名称一样。这意味着您可以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'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Swift中定义全局函数?

如何在Scala中定义全局函数?

如何在TypeScript中定义全局函数?

如何在python中定义空变量或将值从函数传递给全局变量?

如何在Python中访问与函数参数相同的全局名称

如何在python函数中修改多个全局变量

如何在python“递归”函数中重置全局变量?

如何在python中调用定义的函数?

如何在vue中定义全局方法?

如何在rpg程序中定义可在调用函数中访问的全局变量

如何在函数中更新全局词典

Python函数如何使用该函数的参数中定义的名称创建全局对象?

如何在lua中定义具有事件参数的全局函数

如何在MATLAB的全局优化工具箱中定义待优化的目标函数变量?

如何在函数内部定义全局变量?

是否可以在Python中的函数中定义全局变量

是否可以在Python中的函数中定义全局变量

如何在python中的多处理目标函数中对全局数据框执行操作?

如何在函数中增加全局变量,然后在 Python 中多次使用/增加

如何在python中定义周期函数?

如何在python的递归函数中定义共享列表?

如何在“我的”python 解释器中定义内置函数?

如何在python中定义类外的成员函数?

如何在python中定义全局列表并将本地列表附加到它

如何在python中设置%的全局值

如何使jQuery.ready中定义的函数全局可用?

如何从C中的函数更改全局定义的变量

如何在函数中完成对变量的更改会全局影响变量python

如何在 Python 中跨多个函数更新全局变量