tem*_*ame 4 python variables state
对我来说,上下文是我需要在调用修改该值的函数之间保留的单个int值.我可以使用全球,但我知道这是气馁的.现在我使用了包含int的列表形式的默认参数,并利用了可变性,以便在调用之间保留对值的更改,如下所示 -
def increment(val, saved=[0]):
saved[0] += val
# do stuff
Run Code Online (Sandbox Code Playgroud)
这个功能通过tkinter附加到一个按钮,就像这样〜
button0 = Button(root, text="demo", command=lambda: increment(val))
Run Code Online (Sandbox Code Playgroud)
这意味着我没有可以分配给函数外部的局部变量的返回值.
人们通常如何处理这个问题?我的意思是,确定,可变性技巧可以工作,但是如果我需要从多个函数中访问和修改该值,该怎么办?
如果没有使用静态方法和内部属性等设置类,是不是可以做到这一点?
使用课程.使用实例成员来保持状态.
class Incrementable:
def __init__(self, initial_value = 0):
self.x = initial_value
def increment(self, val):
self.x += val
# do stuff
Run Code Online (Sandbox Code Playgroud)
您可以添加__call__模拟函数调用的方法(例如,如果您需要向后兼容).它是否是一个好主意实际上取决于上下文和您的具体用例.
如果没有使用静态方法和内部属性等设置类,是不是可以做到这一点?
它可以,但不涉及具有属性的类/对象的解决方案不是"pythonic".在python中定义类很容易(上面的例子只有5条简单的行),它给你最大的控制和灵活性.
使用python的mutable-default-args"怪异"(我不会称之为"功能")应被视为黑客.
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |