参考资料:
1. 《Python基础教程》
2. http://www.runoob.com/python/python-functions.html
3. http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000
4. http://www.runoob.com/python/python-modules.html
6. http://blog.csdn.net/leexide/article/details/39908279
7. 包机制
▶ 函数
Python的参数都是引用传递。
函数语法如下:
def functionname( parameters ): "函数_文档字符串" function_suite return [expression]
实例:
def printme( str ): "打印传入的字符串到标准显示设备上" print str return
Python支持缺省参数和不定长参数,缺省参数的定义与使用同其它编程语言。不定长参数的使用实例如下:
#!/usr/bin/python # -*- coding: UTF-8 -*- # 可写函数说明 def printinfo( arg1, *vartuple ): "打印任何传入的参数" print "输出: " print arg1 for var in vartuple: print var return; # 调用printinfo 函数 printinfo( 10 ); printinfo( 70, 60, 50 );
Python使用Lambda表达式来创建匿名参数:
Lambda语法:
lambda [arg1 [,arg2,.....argn]]:expression
实例:
sum = lambda x, y = 5: x + y sum(3)
▶ 模块
模块是一个保存了Python代码的(如:.py)文件,也是Python对象,具有随机的名字属性用来绑定或引用。其中,可定义函数、类和变量,以及可执行代码。
import语句语法:
import module1[, module2[,... moduleN]
from...import语句语法:
from modname import name1[, name2[, ... nameN]]
from modname import *
全局变量的使用:
#!/usr/bin/python # -*- coding: UTF-8 -*- Money = 2000 def AddMoney(): global Money Money = Money + 1 print Money AddMoney() print Money
dir(module_name)函数,返回一个module中定义的所有模块,变量和函数组成的一个列表。
globals()和locals()函数,分别返回全局或局部命令空间的名字。
reload(module_name)函数,重新导入一个模块。
▶ 包
为了避免将文件夹名当作普通的字符串,包是一个至少要包含__init__.py文件的文件夹。
__init__.py的内容可为空,一般用来进行包的某些初始化工作或者设置__all__值,__all__是在from package-name import *这语句使用的,全部导出定义过的模块。
__all__ = ['module_1', 'module_2']
图1 包、模块、函数和类的关系
图2 实例组织结构
parent文件夹中的__init__.py
#!/usr/bin/env python # -*- coding=utf-8 -*- if __name__ == '__main__': print 'Run as main in parent...' else: print __name__ print 'pack 1 or pack 2 init...'
pack_1文件夹中的__init__.py:
#!/usr/bin/env python # -*- coding=utf-8 -*- __all__ = ["module_1"] if __name__ == '__main__': print 'Run as main in pack 1...' else: print __name__ print 'pack 1 init...'
pack_2文件夹中的__init__.py:
#!/usr/bin/env python # -*- coding=utf-8 -*- __all__ = ["module_2"] if __name__ == '__main__': print 'Run as main in pack 2...' else: print __name__ print 'pack 2 init...'
使用实例:
#!/usr/bin/env python # -*- coding=utf-8 -*- from parent.pack_1 import * from parent.pack_2 import * module_1.func1() module_2.func2()
结果:
parent
pack 1 or pack 2 init...
parent.pack_1
pack 1 init...
parent.pack_2
pack 2 init...
pack_1.module_1.func1()
pack_2.module_2.func2()
如果直接运行__init__.py,则__name__是main。