函数和模块

2020-04-28  本文已影响0人  F_er

在Python中,函数的参数可以有默认值,也支持使用可变参数,所以Python并不需要像其他语言一样支持函数的重载,因为我们在定义一个函数的时候可以让它有多种不同的使用方式

传递参数时可以不按照设定的顺序进行传递

def add(*args):在参数名前面的 * 表示args是一个可变参数

1.两个文件(每个文件代表一个模块)含有同名函数

如果一个模块中foo( )函数之后还有其他代码块,给这代码块加if __name__ == '__main__':
a. __name__是Python中一个隐含的变量它代表了模块的名字
b. 只有被Python解释器直接执行的模块的名字才是main

2.Python查找一个变量时会按照局部作用域 => 嵌套作用域 =>全局作用域 =>内置作用域的顺序进行搜索

3.属性的公私

class Test:

    def __init__(self, foo):
        self.__foo = foo #self.foo=foo

    def __bar(self):
        print(self.__foo)
        print('__bar')

但是,Python并没有从语法上严格保证私有属性或方法的私密性,它只是给私有的属性和方法换了一个名字来妨碍对它们的访问,事实上如果你知道更换名字的规则仍然可以访问到它们,下面的代码就可以验证这一点。之所以这样设定,可以用这样一句名言加以解释,就是"We are all consenting adults here"。因为绝大多数程序员都认为开放比封闭要好,而且程序员要自己为自己的行为负责。

class Test:

    def __init__(self, foo):
        self.__foo = foo

    def __bar(self):
        print(self.__foo)
        print('__bar')


def main():
    test = Test('hello')
    test._Test__bar() # 注意这里
    print(test._Test__foo)


if __name__ == "__main__":
    main()
上一篇 下一篇

猜你喜欢

热点阅读