有没有办法在python中修改datetime对象?

在我有的功能主

def main():
    #...
    def button_callback(button,a, byMouse,label):
            #...
            date = date - oneday
            while(date.isoweekday()>5): date = date -oneday
            #...
    oneday = datetime.timedelta(1)
    date = datetime.date.today()

python抱怨:在赋值之前引用了局部变量'date',这是预期的。 在main()的其他部分,我注意不要指定而是修改,因此我举例说明

def main():
    # other part of main()
    def clear_callback( button,byMouse,aaa):
        a_cats.clear()

    a_cats = set(["GT","GR"])

哪个python很高兴(如果我设置a_cats = a_cats.clear(),它不会是)。

有没有办法修改日期时间对象而不明确使用“=”,这样我可以避免使用全局变量?


如果您使用Python 3.x,则可以将该变量声明为nonlocal

def main():
    def button_callback(button,a, byMouse,label):
        nonlocal date  # <--------------
        date = date - oneday
        ...

    oneday = datetime.timedelta(1)
    date = datetime.date.today()

datetime对象是不可变的。 更改date的唯一方法是将其绑定到新的datetime对象。

分配给外部范围的变量,你可以使用nonlocal在Python 3作为@falsetru建议或使用列表或在Python 2自定义对象效仿:

def button_callback(self, *args):
    self.date -= DAY

与X语言关闭相比,请参阅Python中的闭包有哪些限制?

链接地址: http://www.djcxy.com/p/51257.html

上一篇: Is there a way to modify datetime object in python?

下一篇: How do I go about simulating the equivalent of pass