我已将要尝试的内容简化为最简单的形式。我有一个运行良好的模块(prog1.py)。 prog1.py中的函数可以正确访问变量(yy),而不会出现错误。
#prog1.py
def func():
print (yy)
return()
def main(yy):
print(yy)
func()
return()
#-----------------------------------------------
if __name__ == '__main__':
yy = 200
main(yy)
当我将该模块导入另一个模块(prog2.py)时,同一函数无法访问变量(yy)。
#prog2.py
import prog1
yy = 200
prog1.main(yy)
我得到:
在功能的第3行中没有定义名称'yy'。
执行此操作的“正确”(python)方法是什么?
答案 0 :(得分:0)
问题在func
中:
def func():
print (yy)
return()
第print (yy)
行尝试访问yy
,但是if __name__ == '__main__':
对于该模块不是正确的(__name__
将是prog1
而不是__main__
),因此它不会进入if
:
if __name__ == '__main__':
yy = 200
main(yy)
因此不会定义yy
。
在此question中详细了解if __name__ == '__main__':
。
根据您在评论中提到的内容:
#prog1.py
yy = 'prog1 yy'
def func():
print(yy)
def main(yy):
print(yy)
func()
if __name__ == '__main__':
yy = 200
main(yy)
# prog2.py
import prog1
yy = 200
prog1.main(yy)
运行:
python prog2.py
输出:
200
prog1 yy