python:在不同模块的函数中访问变量

时间:2019-10-10 06:30:36

标签: python variables global local

我已将要尝试的内容简化为最简单的形式。我有一个运行良好的模块(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)方法是什么?

1 个答案:

答案 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
相关问题