如何将变量从一个文件导入到另一个文件?

示例:file1有变量x1和x2如何将它们传递给file2?

如何将所有变量从一个导入到另一个?


当前回答

在file2中导入file1:

要从file1导入所有变量,而不淹没file2的命名空间,使用:

import file1

#now use file1.x1, file2.x2, ... to access those variables

将所有变量从file1导入到file2的命名空间(不推荐):

from file1 import *
#now use x1, x2..

从文档中可以看出:

虽然从模块导入*在模块级别使用它是有效的 通常是个坏主意。首先,这失去了Python的一个重要属性 否则,您可以知道每个顶层名称是由a定义的 简单的“搜索”功能在您最喜爱的编辑器。你也会打开 如果某些模块增加了额外的内容,你自己将来会遇到麻烦 函数或类。

其他回答

马克的回答是正确的。实际上,你可以打印变量print(hex(id(libvar))的内存地址,你可以看到地址是不同的。

# mylib.py
libvar = None
def lib_method():
    global libvar
    print(hex(id(libvar)))

# myapp.py
from mylib import libvar, lib_method
import mylib

lib_method()
print(hex(id(libvar)))
print(hex(id(mylib.libvar)))

实际上,这和导入变量是不一样的:

from file1 import x1
print(x1)

and

import file1
print(file1.x1)

虽然在导入x1和file1时。X1有相同的值,它们不是相同的变量。例如,调用file1中的函数来修改x1,然后尝试从主文件中打印该变量:您将看不到修改后的值。

最好显式导入x1和x2:

from file1 import x1, x2

这允许您在file2中工作时避免与来自file1的变量和函数发生不必要的名称空间冲突。

但如果你真的想,你可以导入所有的变量:

from file1 import * 
from file1 import *  

将导入file1中的所有对象和方法

在file2中导入file1:

要从file1导入所有变量,而不淹没file2的命名空间,使用:

import file1

#now use file1.x1, file2.x2, ... to access those variables

将所有变量从file1导入到file2的命名空间(不推荐):

from file1 import *
#now use x1, x2..

从文档中可以看出:

虽然从模块导入*在模块级别使用它是有效的 通常是个坏主意。首先,这失去了Python的一个重要属性 否则,您可以知道每个顶层名称是由a定义的 简单的“搜索”功能在您最喜爱的编辑器。你也会打开 如果某些模块增加了额外的内容,你自己将来会遇到麻烦 函数或类。