enn*_*ler 122
from file1 import *
Run Code Online (Sandbox Code Playgroud)
将导入file1中的所有对象和方法
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所具有的重要属性 - 您可以通过您喜欢的编辑器中的简单"搜索"功能知道每个顶级名称的位置.如果某个模块增加了额外的功能或类,你也会在将来遇到麻烦.
Chr*_*ord 34
最好明确导入x1和x2:
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)
脚本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的函数,然后尝试从主文件中打印该变量:您将看不到修改后的值。