【问题标题】:Python - passing global variable as an argument to imported modulePython - 将全局变量作为参数传递给导入的模块
【发布时间】:2017-05-15 17:30:48
【问题描述】:

为了运行程序playlist.py,我有一个简单的测试接口脚本interface.py,代码如下:

seeds = {}

user_input1 = raw_input("Please pick a seed: track, artist or genre. >> ")

user_input2 = raw_input("which one? >> ")

if user_input1 == 'track':
    seeds['track'] = user_input2
elif user_input1 == 'artist':
    seeds['artist']= user_input2
else:
    seeds['genre'] = user_input2

playlist.pyinterface.py在同一个目录下,我这里导入的是前者:

if __name__ == "__main__":
    from playlist import *

playlist.py 我定义了我的类,参数seeds 应该像这样传递:

playlilst.__init__(self, **seeds)

但是当我运行interface.py 时,我收到以下错误:

playlist.__init__(self, **seeds) NameError: global name 'seeds' is not defined

playlist.py 的导入方式是否正确?我在这里做错了什么?

【问题讨论】:

  • 我们将需要查看我们可以实际运行的代码,这实际上会在运行时产生问题。
  • 没有必要。如果我将所有interface.pycode 插入playlist.py,程序将按需要运行。所以问题一定出在两个脚本的交互方式上。
  • 我们需要知道从播放列表导入所有内容后会发生什么。如果您只想知道如何传递全局变量,无论它如何解决或不会解决您的实际问题,它就像这样:global seeds; seeds = {} 。但同样,您所描述的内容应该不是问题,因此我们最好查看您的代码。
  • 我明白了,但 playist.py 是 3.000 行代码。所以就解决这个问题而言,我在这里似乎陷入了死胡同。

标签: python python-module


【解决方案1】:

在 playlist.py 中,

from interface import seeds

【讨论】:

  • 必须从界面导入东西到模型中没有多大意义。
  • @TigerhawkT3 当然不是一个理想的答案,但它是唯一的,它解决了问题。有一点感觉总比没有感觉好。
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2021-01-27
  • 2022-01-14
  • 2021-12-01
  • 2014-02-18
  • 1970-01-01
相关资源
最近更新 更多