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

问题描述 投票:-2回答:4

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

我试过在互联网上查找类似的帖子和文章。同时本地化一个似乎运行良好的小测试...但是在我的整个代码的这一部分它不起作用。

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,但所有打印的都是原始的“”值。不是更新的值。

python global-variables
4个回答
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)

0
投票

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

  • change_it之前没有调用print_it()(可能按钮没有调用它)
  • strftime表达式提供一个空字符串(不太可能)

0
投票

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


0
投票

对不起,伙计们,感谢您的帮助。

该功能已链接到一个复选框,仅在单击该复选框时才有效。一旦我开始点击复选框,变量就会更新。

我现在已修复它,以便无论复选框是否已被激活,全局变量都会更新。

感谢你的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.