@yanglt7
2018-12-03T06:40:10.000000Z
字数 1504
阅读 654
Python
在Python中,一个 .py 文件就称之为一个模块(Module)。
最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括 Python 内置的模块和来自第三方的模块。
使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。点这里查看Python的所有内置函数。
为了避免模块名冲突,Python 又引入了按目录来组织模块的方法,称为包(Package)。
每一个包目录下面都会有一个 __init__.py 的文件,这个文件是必须存在的,否则,Python 就把这个目录当成普通目录,而不是一个包。
#!/usr/bin/env python3 标准注释,让文件可以在 Unix/Linux/Mac 上运行
# -*- coding utf-8 -*- 标准注释,表示 .py 文件使用的是 utf-8 编码
'a test module' 表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释;
__author__='Y-momo' 作者
ipmport sys 导入 sys 模块
def test():
args=sys.argv
if len(args)==1:
print('Hello,world!')
elif len(args)==2:
print('Hello.%s!' %args[1])
else:
print('Too many arguments!')
if __name__=='__main__'
test()
sys 模块有一个 argv 变量,用 list 存储了命令行的所有参数。argv 至少有一个元素,因为第一个参数永远是该 .py 文件的名称,例如:
运行 python3 hello.py 获得的 sys.argv 就是 ['hello.py'];
运行 python3 hello.py Michael 获得的 sys.argv 就是['hello.py', 'Michael]。
在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在 Python 中,是通过 _ 前缀来实现的。
类似 __xxx__ 这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的 __author__,__name__ 就是特殊变量,hello 模块定义的文档注释也可以用特殊变量 __doc__ 访问,我们自己的变量一般不要用这种变量名;
类似 _xxx 和 __xxx 这样的函数或变量就是非公开的(private),不应该被直接引用,比如 _abc,__abc 等;
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。