从另一个文件导入变量?

Ofe*_*fek 114 python variables import file

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

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

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

enn*_*ler 122

from file1 import *  
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,这通常是您[不应该]的事情(http://docs.python.org/2/howto/doanddont.html#from-module-import). (43认同)
  • 我试着这样做,但似乎python找不到*file1*,因为我收到了这个错误:`ImportError:没有名为file1的模块 (8认同)
  • 正如David所说,这污染了命名空间,并且可能通过屏蔽其他模块(包括标准发行版中的那些模块)中的对象和函数而产生灾难性后果. (6认同)
  • 您是否有一个__init__.py文件?有关更多详细信息,请参见[here](http://stackoverflow.com/questions/4142151/python-how-to-import-the-class-within-the-same-directory-or-sub-directory)。 (3认同)

Ash*_*ary 61

导入file1内部file2:

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

import file1

#now use file1.x1, file2.x2, ... to access those variables
Run Code Online (Sandbox Code Playgroud)

要将所有变量从file1导入到file2的命名空间(不推荐):

from file1 import *
#now use x1, x2..
Run Code Online (Sandbox Code Playgroud)

来自文档:

虽然from module import *在模块级别使用它是有效的,但通常是个坏主意.首先,这会失去Python所具有的重要属性 - 您可以通过您喜欢的编辑器中的简单"搜索"功能知道每个顶级名称的位置.如果某个模块增加了额外的功能或类,你也会在将来遇到麻烦.

  • 虽然你必须为每个文件添加`file1.varX`,但它确实会导入变量. (4认同)
  • 它不导入变量:\ (2认同)

Chr*_*ord 34

最好明确导入x1x2:

from file1 import x1, x2
Run Code Online (Sandbox Code Playgroud)

这可以让你避免与变量和函数不必要的命名空间冲突file1,而在工作file2.

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

from file1 import * 
Run Code Online (Sandbox Code Playgroud)


小智 17

首先.py:

a=5
Run Code Online (Sandbox Code Playgroud)

第二个.py:

import first
print(first.a)
Run Code Online (Sandbox Code Playgroud)

结果将为 5。


小智 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)))
Run Code Online (Sandbox Code Playgroud)


Rav*_*i G 9

脚本1.py

title="Hello world"
Run Code Online (Sandbox Code Playgroud)

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

方法一:

import script1
print(script1.title)
Run Code Online (Sandbox Code Playgroud)

方法二:

from script1 import title
print(title)
Run Code Online (Sandbox Code Playgroud)


小智 5

实际上,使用以下命令导入变量并不完全相同:

from file1 import x1
print(x1)
Run Code Online (Sandbox Code Playgroud)

import file1
print(file1.x1)
Run Code Online (Sandbox Code Playgroud)

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