[英]Importing variables from another file?
如何将变量从一个文件导入到另一个文件?
示例: file1
有变量x1
和x2
如何将它们传递给file2
?
如何将所有变量从一个变量导入另一个变量?
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..
从 文档:
虽然在模块级别使用
from module import *
是有效的,但通常不是一个好主意。 首先,这失去了 Python 原本拥有的一个重要属性——您可以通过您最喜欢的编辑器中的简单“搜索”功能知道每个顶级名称的定义位置。 如果某个模块增加了额外的函数或类,你将来也会遇到麻烦。
最好明确导入x1和x2 :
from file1 import x1, x2
这允许您在使用file2
避免与来自file1
变量和函数发生不必要的命名空间冲突。
但如果你真的想要,你可以导入所有变量:
from file1 import *
实际上这与导入变量并不完全相同:
from file1 import x1
print(x1)
和
import file1
print(file1.x1)
尽管在导入时 x1 和 file1.x1 具有相同的值,但它们不是相同的变量。 例如,在 file1 中调用一个修改 x1 的函数,然后尝试从主文件中打印变量:您将看不到修改后的值。
脚本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)))
第一个.py:
a=5
第二个.py:
import first
print(first.a)
结果将是 5。
如何将变量从一个文件导入到另一个文件?
示例: file1
具有变量x1
和x2
如何将它们传递给file2
?
如何将所有变量从一个导入到另一个?
我已经阅读了所有答案,并尝试通过点击将变量从一个文件导入到另一个文件:
from file1 import *
要么
from file1 import var1
不幸的是,它不能按预期工作,因为我不仅要导入变量,而且要导入整个文件1。 那不是目的(我真的只想要var1,脚本相当大),所以我想知道我是否是唯一注意到此行为的人,因为这里的每个人都对答案感到满意。
谢谢你的帮助。
如果您需要从同一级别或更低级别的目录导入变量,您可以使用来自项目 cwd 的“import_module”:
from importlib import import_module
mod = import_module(
f"{cwd}.source.myfolder.myfile"
)
var = getattr(mod, "my_variable")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.