当前位置: 首页 > 面试题库 >

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

仉磊
2023-03-14
问题内容

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


问题答案:

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


 类似资料:
  • 我找到了一些像这样的向导http://www.mackhankins.com/blog/defining-your-own-helper-classes-in-laravel-4但这并不是我真正想要的,因为我希望能够使用函数修改不是类成员的值。 我有很多正则表达式函数,如果字符串与模式匹配,它们将修改字符串并返回修改后的字符串。我希望能够调用这些函数,就好像它们是在php函数中构建的一样。这是我过

  • 我想在调用这个函数的时候 初始化一次这个参数全局变量 后续辉修改这个参数的值 我这样写 报错了 请问如何修改呢?

  • 我准备我的API文档的方式是每只手做一次,而不是自动生成。我有应该发送到所有API的头,不知道是否可以为整个API全局定义参数? 这些头中有些是静态的,有些必须在调用API时设置,但它们在所有API中都是相同的,我不想为每个API和每个方法复制和粘贴参数,因为这在将来是不可维护的。 我看到了API定义的静态头,但没有一个文档说明如何设置或使用它们。 这到底有没有可能?

  • 问题内容: 是否可以在JavaScript函数中定义全局变量? 我想在其他函数中使用变量(在函数中声明)。 问题答案: 是的,正如其他人所说的,您可以在全局范围内(在所有函数之外)使用声明全局变量: 或者,您可以在上分配一个属性: …因为在浏览器中,用声明的 所有全局变量 都是对象的属性。(在最新规范ECMAScript 2015中,全局范围内的new ,和语句创建的不是全局对象属性的全局变量;这

  • 问题内容: 在Coffeescript.org上: 将编译为: 通过在node.js下的coffee-script进行编译可以做到: 文件说: 如果要创建供其他脚本使用的顶级变量,请将它们作为属性附加到窗口或CommonJS中的exports对象上。如果您同时针对CommonJS和浏览器,那么存在运算符(见下文)为您提供了一种可靠的方法来确定将它们添加到何处:root = exports?这个 然

  • 问题内容: 如何在Python中的函数中声明全局变量? 也就是说,因此不必在之前声明它,而是可以在函数外部使用它。 问题答案: 是的,但是为什么?