Dav*_*vid 10 python python-import python-3.x
请考虑以下代码:
#main.py
From toolsmodule import *
database = "foo"
#toolsmodule
database = "mydatabase"
Run Code Online (Sandbox Code Playgroud)
看起来,这会在每个模块中创建一个具有不同内容的变量.如何从main修改toolsmodule中的变量?以下不起作用:
toolsmodule.database = "foo"
Run Code Online (Sandbox Code Playgroud)
Dan*_*man 17
听起来像是不使用的众多好理由中的另一个from toolsmodule import *.
如果你这样做import toolsmodule,那么你可以做toolsmodule.database = 'foo',一切都很棒.
Pythons变量名只是变量上的标签.如果import *所有这些标签都是本地标签,那么当您设置数据库时,只需替换局部变量,而不是工具模块中的变量.因此,这样做:
toolsmodule.py:
database = "original"
def printdatabase():
print "Database is", database
Run Code Online (Sandbox Code Playgroud)
然后运行:
import toolsmodule
toolsmodule.database = "newdatabase"
toolsmodule.printdatabase()
Run Code Online (Sandbox Code Playgroud)
输出是
Database is newdatabase
Run Code Online (Sandbox Code Playgroud)
请注意,如果您从另一个模块ALSO执行import *了更改,则不会反映出来.
简而言之:永远不要使用from x import *.我不知道为什么所有的新手都坚持这样做,尽管我所知道的所有文件都说这是个坏主意.