玩蛇网提供最新Python编程技术信息以及Python资源下载!

Python namespace应该如何理解

python爱好者们初学这门语言的时候应该都执行过import this

我这么多年来一直对最后一句

Namespaces are one honking great idea – let’s do more of those!

之中的 namespace 有疑惑。

对于 module,可以有三种方式导入

import SomeModule

from SomeModule import SomeClass

from SomeModule import *

什么时候分别用一、二、三是最佳实践?

另外,我们还可以在一个函数的 scope 的中再定义函数,除了写 decorator,还有别的地方适合这么用吗?或者除此之外都应当用 class

希望各位讲解一二。

什么时候分别用一、二、三是最佳实践?——这个问题没有特别的规定,只是看个人编码风格和习惯。
这三种的定义你应该明白,二和三是一样的,只是三用了一个通配符导入了模块中所有名字而已。
命名空间的本质就是采用更长的字符串来区分不同模块下可能同名的函数/类,然后为了减少写函数名/类名时候的麻烦,发明的一种可以认为是语法糖的东西。

在一个函数的 scope 的中再定义函数——我本人不常用这种做法,因为我是学C语言出身,一个函数的scope中再定义一个函数,我看到的唯一好处就是可以隐藏一些仅仅由这个函数使用而其他函数不使用的一些小函数,而且不用再传参数:

def fun(a, b):
    def calc():
        return a * b - a / b
    if a < b:
        return calc()
    if a >= b:
        return 1 + calc()

calc函数不用传参,方便使用,而且对外是隐藏的,这么奇葩的函数在fun外也没有人用,放到fun内部是比较合适的。当然,也不绝对,你可以爱怎么写怎么写。

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd19347.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月14日 - 12时20分36秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules