Python:导入函数访问全局变量

Python: Imported functions access to global variables

我有两个文件如下所示。

#foobar.py

foo = False

def bar():
    if foo:
        print "Worked"
    else:
        print "Did not work"

#main.py

from foobar import *

foo = True
bar()
print foo

我运行$ python main.py时的输出是

Did not work
True

bar() 是否可以访问 main.py 中定义的全局 foo

更新

应该早点澄清,但我认为这个问题应该尽可能简单。

foobar.py 实际上是一个支持文件(其他函数具有不同的参数,也使用全局 foo),我想与一堆相关的 iPython 笔记本一起使用。

理想情况下,笔记本应该有自己的 foo 定义,应该发现并处理它的缺失。

我选择不将它作为参数包括在内只是为了尝试让代码看起来更清晰。

我知道:

Wildcard imports ( from import * ) should be avoided, as they make it unclear which names are present in the namespace, confusing both readers and many automated tools.-pep8

将main.py改为

#main.py

import foobar

foobar.foo = True
foobar.bar()
print foobar.foo

将foobar.py改为

#foobar.py
import __main__
foo = False

def bar():
    if __main__.foo:
        print "Worked"
    else:
        print "Did not work"

好吧,main.py 中的变量 foo 仅具有该模块的作用域,foobar.py 也是如此。进一步阅读。

how to access global variable within __main__ scope?

接受L3viathan的评论作为答案。

No, it's not. Why don't you want to use arguments? – L3viathan Apr 22 at 19:15