192

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

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

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

4

7 回答 7

205
from file1 import *  

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

于 2013-06-22T22:09:52.630 回答
103

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 原本拥有的一个重要属性——你可以知道每个顶级名称在你最喜欢的编辑器中由一个简单的“搜索”函数定义的位置。如果某些模块增加了额外的功能或类,你也会在未来遇到麻烦。

于 2013-06-22T22:06:06.473 回答
61

最好显式导入x1x2

from file1 import x1, x2

这使您可以避免file1file2.

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

from file1 import * 
于 2014-11-12T15:56:47.213 回答
24

实际上,这与导入变量并不完全相同:

from file1 import x1
print(x1)

import file1
print(file1.x1)

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

于 2018-05-09T12:24:48.110 回答
10

第一.py:

a=5

第二个.py:

import first
print(first.a)

结果将是 5。

于 2020-06-29T06:31:54.643 回答
10

脚本1.py

title="Hello world"

script2.py是我们使用 script1 变量的地方

方法一:

import script1
print(script1.title)

方法二:

from script1 import title
print(title)
于 2019-12-13T20:28:02.723 回答
9

马克的回答是正确的。实际上,您可以打印变量的内存地址,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)))
于 2019-06-19T01:13:37.387 回答