在Python中将变量直接分配给函数

Aze*_*rah 5 python variables function

请考虑以下代码:

def apples():
    print(apples.applecount)
    apples.applecount += 1

apples.applecount = 0
apples()
>>> 0
apples()
>>> 1
# etc
Run Code Online (Sandbox Code Playgroud)

这是一个好主意,坏主意还是我应该摧毁自己?如果你想知道为什么我会想要这个,我有一个函数每4秒重复一次,使用win32com.client.Dispatch()它使用windows COM连接到一个应用程序.我认为没有必要每4秒重新创建一次链接.我当然可以使用全局变量,但我想知道这是否也是一个有效的方法.

Ric*_*dle 5

使用类的实例变量来保持计数会更加惯用:

class Apples:
    def __init__(self):
        self._applecount = 0

    def apples(self):
        print(self._applecount)
        self._applecount += 1

a = Apples()
a.apples()  # prints 0
a.apples()  # prints 1
Run Code Online (Sandbox Code Playgroud)

如果您需要仅引用函数本身而不a引用,则可以执行以下操作:

a = Apples()
apples = a.apples

apples()  # prints 0
apples()  # prints 1
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 4

它基本上是一个命名空间全局。您的函数apples()是一个全局对象,该对象的属性也同样是全局的。

它只比常规全局变量好一点点;毕竟,命名空间总的来说是一个好主意。