Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从另一个文件导入变量?_Python_File_Variables_Import - Fatal编程技术网

Python 从另一个文件导入变量?

Python 从另一个文件导入变量?,python,file,variables,import,Python,File,Variables,Import,如何将变量从一个文件导入到另一个文件 示例:file1具有变量x1和x2如何将它们传递到file2 如何将所有变量从一个导入到另一个?导入file1内部file2: 要从file1导入所有变量而不淹没file2的命名空间,请使用: import file1 #now use file1.x1, file2.x2, ... to access those variables 要将所有变量从file1导入file2的命名空间(不推荐): 从: 在模块级使用模块导入中的是有效的* 通常是个坏主意。

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

示例:
file1
具有变量
x1
x2
如何将它们传递到
file2


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

导入
file1
内部
file2

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

import file1

#now use file1.x1, file2.x2, ... to access those variables
要将所有变量从file1导入file2的命名空间(不推荐):

从:

在模块级使用模块导入中的
是有效的*
通常是个坏主意。首先,它失去了Python的一个重要属性 否则有-您可以知道每个顶级名称由 在您最喜爱的编辑器中提供简单的“搜索”功能。你也开吗 如果某个模块增加了额外的 函数或类


将导入文件1中的所有对象和方法最好明确导入x1x2

from file1 import x1, x2
这允许您在使用
file2
时避免与
file1
中的变量和函数发生不必要的命名空间冲突

但如果确实需要,您可以导入所有变量:

from file1 import * 

事实上,这与导入变量的方式不同:

from file1 import x1
print(x1)

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

Marc是正确的。实际上,您可以打印变量的内存地址
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)))

script1.py

title="Hello world"
script2.py是我们使用script1变量的地方

方法1:

import script1
print(script1.title)
from script1 import title
print(title)
方法2:

import script1
print(script1.title)
from script1 import title
print(title)
first.py:

a=5
第二点:

import first
print(first.a)

结果将是5。

如果我要传递1000个变量?@Ofek只需使用
import file1
即可。它不会导入变量:\n它会导入变量,尽管您必须为每个文件预先添加
file1.varX
。但请注意,这通常是您需要的。正如David所指出的,这会污染名称空间,并可能导致通过屏蔽来自其他模块(包括标准发行版中的模块)的对象和函数,我会带来灾难性的后果,但python似乎找不到文件1,因为我遇到了以下错误:
ImportError:没有名为file1的模块
您是否有
\uu init\uuuuuuuuuuy.py
文件?有关更多详细信息,请参阅。
import first
print(first.a)