我在函数内有以下代码:

try:
    PLACES.append(self.name)
except NameError:
    global PLACES
    PLACES = [self.name]


这导致from <file containing that code> import *返回

SyntaxWarning: name 'PLACES' is used prior to global declaration
  global PLACES


所以我想知道这样做是否被认为是不好的做法,如果是,那么正确的做法是什么?我是一个菜鸟。

最佳答案

第一个问题是您不应该执行from foo import *,这只是一种不好的做法,并且会导致名称空间冲突(顺便说一下,没有任何警告),并且稍后会令您头疼。

如果需要在两个模块之间共享全局存储空间;考虑腌制物体并在需要时将其解酸;或k / v存储,缓存或其他外部存储。如果您需要存储丰富的数据,则数据库可能是理想的选择。

检查名称是否指向对象通常是某处设计不良的标志。如果不存在名称,您也不应假定污染全局名称空间-您怎么知道没有故意删除PLACES

关于python - 使用“try”来查看是否定义了变量是否被认为是Python中的不良做法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16836462/

10-12 19:01