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

posted @ 2017-02-22 22:18  Wasdns  阅读(182)  评论(0编辑  收藏  举报