模块
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
' a test module '
__author__ = 'Michael Liao'
import 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()
第1行和第2行是标准注释,第1行注释可以让这个hello.py文件直接在Unix/Linux/Mac上运行,第2行注释表示.py文件本身使用标准UTF-8编码;
第4行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释;
第6行使用__author__变量把作者写进去,这样当你公开源代码后别人就可以瞻仰你的大名;
以上就是Python模块的标准文件模板。
当我们在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败,因此,这种if测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。
运行命令:
>>> $ python3 hello.py
Hello, world!
>>> $ python hello.py Michael
Hello, Michael!
>>> import hello
>>> hello.test()
Hello, world!
作用域:
-
变量名的设置:
在模块内部使用_x
__x
前缀
公开使用abc
sum
特殊变量__xx__
-
使用说明:
外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。
举个例子:你只需要将weather_act
命名为公用,内部的可以设为_func
。
def _func1(weather):
return '%s day, Hang out!' % weather
def _func2(weather):
return '%s day, Stay home!' % weather
def weather_act(weather):
if weather == 'Good':
return _func1(weather)
if weather == 'Bad':
return _func2(weather)
# 测试
>>> weather_act('Good')
'Good day, Hang out!'