更改值并导入-不保存新值

时间:2018-10-17 07:09:58

标签: python-3.x

我正在使用最新的python版本;我在一个文件中有一个简单的函数,然后另一个文件调用了该函数。问题是无法打印来自函数的变量。

file1.py

var = "one"
def first():
    global var
    if smt == True:
        var = "1"
    else:
        var = "W"

file2.py

from file1 import *
first()
print(var)

这是简化版本,因为我有更多不相关的代码,但是问题仍然存在,我的变量由于某些原因没有改变。

1 个答案:

答案 0 :(得分:1)

通常不鼓励使用import *的做法;由于可能会发生名称空间冲突,因此如果导入量很大,效率很低。

我个人会进行明确的导入:from file1 import first

我还相信您对global是什么有错误的认识。这可能会有所帮助:

  

在第一种情况下,全局关键字是没有意义的,因此不是   正确。在模块级别定义变量使其成为全局变量   变量,则不需要全局关键字。

     

第二个例子是正确的用法。

     

但是,全局变量最常见的用法是不使用   全局关键字在任何地方。仅当您使用global关键字时,才需要   想要在函数/方法中重新分配全局变量。

请记住,只需使用var关键字,您就不会在file2.py中拥有global;如果您想访问变量var,可以使用类似以下内容的

file1.py中:

var = "one"


def first():
    global var

    var = "1"

file2.py中:

import file1 

file1.first()
print(file1.var)