python:作用域详解编程语言

作用域


 

在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过_前缀来实现的。

公开:正常的函数和变量名是公开的(public),可以被直接引用,比如:abcx123PI等;

特殊:类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author____name__就是特殊变量hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名;

私有:类似_xxx__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc__abc等;

之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。

private函数或变量不应该被别人引用,那它们有什么用呢?请看例子:

def _private_1(name): 
    return 'Hello, %s' % name 
 
def _private_2(name): 
    return 'Hi, %s' % name 
 
def greeting(name): 
    if len(name) > 3: 
        return _private_1(name) 
    else: 
        return _private_2(name)

我们在模块里公开greeting()函数,而把内部逻辑用private函数隐藏起来了,这样,调用greeting()函数不用关心内部的private函数细节,这也是一种非常有用的代码封装和抽象的方法,即:

外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。

注意,实践得知


__xxx 变量: 父类中定义的私有变量在子类中无法访问,但是_xxx单下划线的变量是可以被引用的。

 

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/17631.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论