如何将变量从一个文件导入到另一个文件?
示例:file1
有变量x1
以及x2
如何将它们传递给file2
?
如何将所有变量从一个导入另一个?
from file1 import *
将导入 file1 中的所有对象和方法
file1
内部导入file2
:
要从 file1 导入所有变量而不淹没 file2 的命名空间,请使用:
import file1
#now use file1.x1, file2.x2, ... to access those variables
将所有变量从 file1 导入到 file2 的命名空间(不推荐):
from file1 import *
#now use x1, x2..
从文档:
虽然在模块级别使用它是有效的,
from module import *
但它通常是一个坏主意。一方面,这失去了 Python 原本拥有的一个重要属性——你可以知道每个顶级名称在你最喜欢的编辑器中由一个简单的“搜索”函数定义的位置。如果某些模块增加了额外的功能或类,你也会在未来遇到麻烦。
最好显式导入x1和x2:
from file1 import x1, x2
这使您可以避免file1
在file2
.
但如果你真的想要,你可以导入所有变量:
from file1 import *
实际上,这与导入变量并不完全相同:
from file1 import x1
print(x1)
和
import file1
print(file1.x1)
尽管在导入时 x1 和 file1.x1 具有相同的值,但它们不是相同的变量。例如,在 file1 中调用一个修改 x1 的函数,然后尝试从主文件中打印变量:您将看不到修改后的值。
第一.py:
a=5
第二个.py:
import first
print(first.a)
结果将是 5。
脚本1.py
title="Hello world"
script2.py是我们使用 script1 变量的地方
方法一:
import script1
print(script1.title)
方法二:
from script1 import title
print(title)
马克的回答是正确的。实际上,您可以打印变量的内存地址,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)))