如何从Python脚本仅导入指定变量,避免执行原脚本冗余代码
如何在Python中导入变量而不执行脚本中的其他代码?
嘿,这个问题我之前也碰到过!当你从另一个脚本导入变量时,Python会默认执行整个被导入的脚本,所以script1.py里的print(a)和print(c)都会被触发,导致输出了额外内容。要实现只获取变量b的值,输出仅为5,最常用的解决方案是利用Python的__name__魔术变量区分脚本的运行场景。
解决方案:用if __name__ == "__main__":隔离执行代码
修改你的script1.py,把不需要在导入时执行的代码(比如那些print语句)放到if __name__ == "__main__":代码块中:
# script1.py a = 7 c = 10 b = 5 # 只有当脚本被直接运行时,才执行下面的代码 if __name__ == "__main__": print(a) print(c)
原理说明
- 当你直接运行
script1.py时,__name__变量的值会是__main__,所以if块里的print(a)和print(c)会正常执行,输出7和10。 - 当你在
script2.py中导入script1的变量时,script1.py的__name__变量的值会是script1(也就是模块名),这时候if块里的代码不会被执行,只会完成变量的定义。
这时候运行你的script2.py:
# script2.py from script1 import b print(b)
输出就只会是5啦!
内容的提问来源于stack exchange,提问作者Gusto_
相关产品推荐
相关产品推荐

