Python之禅中的namespace怎么理解
发布网友
发布时间:2022-04-06 02:53
我来回答
共1个回答
热心网友
时间:2022-04-06 04:22
什么时候分别用一、二、三是最佳实践?——这个问题没有特别的规定,只是看个人编码风格和习惯。
这三种的定义你应该明白,二和三是一样的,只是三用了一个通配符导入了模块中所有名字而已。
命名空间的本质就是采用更长的字符串来区分不同模块下可能同名的函数/类,然后为了减少写函数名/类名时候的麻烦,发明的一种可以认为是语法糖的东西。
在一个函数的 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内部是比较合适的。当然,也不绝对,你可以爱怎么写怎么写。