模块和函数名称是否相同被认为是不好的做法?

时间:2015-09-22 13:23:37

标签: python

例如,这是一个简单的版本。

from app import VERSION

def app():
    print(VERSION)

if __name__ == '__main__':
    app()

这被认为是不好的做法吗?我查看了Python的PEP样式指南,但对于这种特定情况却找不到多少。

2 个答案:

答案 0 :(得分:4)

如果使用from app import VERSION而不是import app,模块和函数之间不会出现名称冲突,因此可以这样做。

答案 1 :(得分:3)

不,这不是坏习惯。这样做非常好,例如,如果你看一下python的内置函数pprint.pprint()

  

pprint.pprint(对象,流=无,缩进= 1,宽度= 80,深度=无)

     

在流上打印对象的格式化表示,然后是换行符。如果stream为None,则使用sys.stdout。这可以在交互式解释器中使用,而不是用于检查值的print语句。缩进,宽度和深度将作为格式化参数传递给PrettyPrinter构造函数。

如果python开发者这样做,那么你也可以这样做。一定要避免名字冲突。但总的来说,在这些情况下你不应该遇到问题。

正如SuperbiasedMan所暗示的那样,还有许多其他内置组件可以做到这一点,例如: time.timedatetime.datetime

正如Apero正确指出的那样,我略微误解了你的情况。

作为修复,我会强调我上面已经说过的内容:请务必避免名字冲突

由于您执行了from app import VERSION,因此from app不与您的def app函数发生冲突,因此这段代码可以正常运行。

我的意见是这是不好的做法,因为如果你出于某种原因并不总是进行特定的导入,而是使用import app,那么它会发生碰撞和你的代码可以做出意想不到的事情。