Python 在全局变量上运行文件

Python 在全局变量上运行文件,python,python-2.7,maya,Python,Python 2.7,Maya,这是一段代码: global episode = "Episode404" import testing reload (testing) #or python testing.py testing.py: def doIt(): print episode doIt() 这让我很震惊 # Error: invalid syntax # 我猜这是因为我试图传递一个全局变量并运行?如何解决这个问题?我想Python没有办法在模块中指定一个对所有名称空间都是全局的变量。尝试以下方式声

这是一段代码:

global episode = "Episode404"
import testing
reload (testing)
#or
python testing.py
testing.py:

def doIt():
    print episode
doIt()
这让我很震惊

# Error: invalid syntax # 

我猜这是因为我试图传递一个全局变量并运行?如何解决这个问题?

我想Python没有办法在模块中指定一个对所有名称空间都是全局的变量。尝试以下方式声明变量:

import testing

global episode
episode = "Episode404"

def doIt():
    print(episode)

doIt()

下面的一行是错误的:

global episode = "Episode404"
但您也误解了全局命令的概念。您需要使用它来更改在当前工作范围之外定义的某些变量的值

安迪的回答是有效的,但这不是必要的,因为你可以用同样的结果:

episode = "Episode404"

def doIt():
    print(episode)

doIt()
global只有当您希望在doIt()范围之外传播此更改时,才需要在doIt()内更改插曲的值,如下所示:

episode = "Episode404"

def doIt():
    global episode
    print(episode)
    episode = "New Episode"

doIt()
print(episode)
输出将是:

"Episode404"
"New Episode"
如果您真的需要使用不同的模块,为什么不将该插曲作为doIt()的参数传递呢

把这个放在你的测试上

def doIt(episode):
    print(episode)
然后将主代码更改为:

from testing import doIt

episode = "Episode404"
doIt(episode)

我认为这种方法比使用全局变量并尝试在模块之间共享它们要好。可能您只能使用黑客或您可能不需要的东西来完成此操作。

发布整个堆栈跟踪。我怀疑你给print打电话不合适。要么运行python3,要么从Future导入了
print\u函数
。就这些。我正在运行python 2.7是的。非常感谢你!