有没有办法修改 python 中的日期时间对象?
Is there a way to modify datetime object in python?
在函数 main 我有
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
对象。
要分配给外部范围变量,您可以在 Python 3 中使用 nonlocal
或在 Python 2 中使用列表或自定义对象来模拟它:
def button_callback(self, *args):
self.date -= DAY
见What limitations have closures in Python compared to language X closures?
在函数 main 我有
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
对象。
要分配给外部范围变量,您可以在 Python 3 nonlocal
或在 Python 2 中使用列表或自定义对象来模拟它:
def button_callback(self, *args):
self.date -= DAY
见What limitations have closures in Python compared to language X closures?