繁体   English   中英

从另一个文件导入变量?

[英]Importing variables from another file?

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

示例: file1有变量x1x2如何将它们传递给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 原本拥有的一个重要属性——您可以通过您最喜欢的编辑器中的简单“搜索”功能知道每个顶级名称的定义位置。 如果某个模块增加了额外的函数或类,你将来也会遇到麻烦。

最好明确导入x1x2

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具有变量x1x2如何将它们传递给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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM