【问题标题】:SyntaxError when adding to a global set inside a function (Python)添加到函数内的全局集时出现语法错误(Python)
【发布时间】:2014-11-25 06:01:53
【问题描述】:

我正在尝试编写一个从文件中读取关键字的函数(以每个关键字在文本文件中的新行上的格式)

我希望该函数将关键字放入名为“desiredItems”的全局 set() 中。

desiredItems = set()

def populateDesired():
    for line in open("desireditems.txt"):
        addableLine = line.rstrip("\n")
        global desiredItems.add(addableLine)

由于某种原因,我的开发环境 (Pycharm) 告诉我 desiredItems.add 语法无效。

(对不起,如果我错误地插入了代码 sn-p 等)

提前致谢

【问题讨论】:

  • 我想set.add() 返回None 所以本质上你使用的是global None。您应该只使用global desiredItems 并在下一行添加。虽然我强烈建议不要使用global 并将集合作为参数传递。
  • @IanAuld,这将是一个运行时错误。事实上global后面必须跟一个或多个标识符,所以.导致它是一个语法错误

标签: python set global-variables shadowing


【解决方案1】:

您根本不需要使用global,只需将其删除即可。

【讨论】:

    【解决方案2】:

    如果需要修改全局变量的绑定,语法是这样的

    def populateDesired():
        global desiredItems
        for line in open("desireditems.txt"):
            addableLine = line.rstrip("\n")
            desiredItems.add(addableLine)
    

    由于您没有修改绑定 - 只是调用一个方法,因此这里根本不需要 global

    def populateDesired():
        for line in open("desireditems.txt"):
            addableLine = line.rstrip("\n")
            desiredItems.add(addableLine)
    

    【讨论】:

    • 谢谢。我将“修改绑定”与“修改集合”混淆了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多