Python学习札记(二十九) 模块2

时间:2023-03-10 06:04:00
Python学习札记(二十九) 模块2

参考:使用模块

NOTE

1.内建sys模块:

#!/usr/bin/env python3

import sys

'a test module'

__author__ = 'wasdns'

def main():
args = sys.argv
if len(args) == 1:
print('Hello')
elif len(args) == 2:
print('Hello, %s' % args[1])
else :
print('Your network has some problem.\n')
print('Please change your network environment') if __name__ == '__main__':
main()
sh-3.2# ./module1.py
Hello sh-3.2# ./module1.py wasdns
Hello, wasdns sh-3.2# ./module1.py wasdns me
Your network has some problem. Please change your network environment

第5行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释.

__author__变量把作者写进去.

2.args参数:

当执行:

./module1.py

时,args只有一个参数,参数0:

args[0] = 'module1.py'

args = ['module1.py']

执行:

./module1.py wasdns

时,args有两个参数,参数0和1:

args[0] = 'module1.py'

args[1] = 'wasdns'

args = ['module1.py', 'wasdns']

3.作用域:模块中函数和变量名的作用域。public与private。

在Python中,为避免模块中函数和变量名的冲突,通过_前缀来实现。

类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,一般不用这样子的命名规范。

类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等。

#!/usr/bin/env python3

import sys

def _func1(name):
print('Hello, %s' % name) def _func2(name):
# do no thing
return def main():
args = sys.argv if len(args) == 1:
print('Error: miss args')
elif len(args) == 2:
_func1(args[1])
else :
_func2(args[1]) if __name__ == '__main__':
main()
sh-3.2# ./module2.py
Error: miss args sh-3.2# ./module2.py wasdns
Hello, wasdns sh-3.2# ./module2.py wasdns hi
sh-3.2#

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

调用_func1和_func2函数无需关心其内部细节,这是一种非常有用的代码封装和抽象的方法。

2017/2/22