如何从def永久更改全局变量

时间:2019-04-17 15:32:28

标签: python global-variables

我在更新和调用全局变量的值时遇到问题。

我试图在互联网上查找类似的帖子和文章。还要对似乎可以正常运行的小测试进行本地化……但是,在我的总体代码的这一部分中,这是行不通的。

WEEK_ONE_REFINED = ""

def change_it():
    global WEEK_ONE_REFINED
    WEEK_ONE_REFINED = week_one_refined.strftime("%d/%m/%Y")

def print_it():
    print (WEEK_ONE_REFINED)

我有一个名为WEEK_ONE_REFINED的全局变量。 我按下一个按钮,然后调用change_it。 然后,我按下另一个按钮并调用print_it,但它所打印的全部是原始的“”值。不是更新的值。

4 个答案:

答案 0 :(得分:0)

为什么需要全球化?这样会更好:

def change_it(week_str):
    return week_str.strftime("%d/%m/%Y")

def print_it(week):
    print (week)

week = change_it("1/2/2019")
print_it(week)

答案 1 :(得分:0)

您的代码是正确的。如果要打印原始的空值,则会发生以下两种情况之一

  • change_itprint_it()之前未调用(可能按钮未调用它)
  • strftime表达式提供了一个空字符串(不太可能)

答案 2 :(得分:0)

乍一看,您的代码似乎正确。我想说的是您的问题是week_one_refined.strftime("%d/%m/%Y")引发异常,并且该变量永远不会更新。

答案 3 :(得分:0)

对不起,谢谢您的所有帮助。

该功能已链接到一个复选框,并且只有在单击该复选框后才能起作用。一旦我开始单击复选框,变量就会更新。

我现在修复了该问题,以便无论是否已激活复选框,都将更新全局变量。

感谢您的所有帮助。