一、定义一个函数
定义一个函数必须遵循如下的简单规则
- 函数代码块以def 关键词开头,后接函数标示符名称和圆括号()
- 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数
- 函数的第一行语句可以选择性的使用文档字符串——用于存放函数说明
- 函数内容以冒号开始并且缩进
- return[expression]结束函数,选择性的返回一个值给掉用方,如果没有return那么就返回空
语法:
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]
默认情况下,传递的参数值是与参数定义顺序保持一致的,其实c、java、sql等都是类似的
二、函数调用
函数调用比较简单,和其他语言类似,不赘述
三、参数传递类型
参数传递类型是按值传递还是按引用传递,其实在c、c++、C#等编程语言中也有参数传递问题,但是在python中所有传递的参数(自变量)都是按照引用传递的,也就是说在函数中改变了参数的内容,那么其他地方都会跟着改变。
四、参数的类型
Python函数可以使用的参数类型有四类:
- 必备参数
- 命名参数
- 缺省参数
- 不定长参数
(一)、必备参数
必备参数须以正确的顺序传入函数,调用时的数量必须和声明时一样。
(二)、命名参数
命名参数和函数调用关系紧密,调用方用参数的命名确定传入的参数值,可以跳过不传值的参数,或者乱序传入参数,此时python解释器能够用参数名匹配参数值
这点类似sql存储过程的调用
(三)、缺省参数
调用函数时,缺省参数的值如果没有传入,则被认为是默认值。
#!/usr/bin/python
#可写函数说明
def printinfo( name, age = 35 ):
"打印任何传入的字符串"
print "Name: ", name;
print "Age ", age;
return;
#调用printinfo函数
printinfo( age=50, name="miki" );
printinfo( name="miki" );
#以上实例输出结果:
#Name: miki
#Age 50
#Name: miki
#Age 35
(四)、不定长参数
在需要一个函数能够处理比当初声明时更多的参数的时候,这些参数叫做不定长参数。基本语法如下:
def functionname([formal_args,] *var_args_tuple ):
"函数_文档字符串"
function_suite
return [expression]
加入了型号*的变量名会存放所有未命名的变量参数,当然也可以选择不多传参数,例如:
#!/usr/bin/python
# 可写函数说明
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print "输出: "
print arg1
for var in vartuple:
print var
return;
# 调用printinfo 函数
printinfo( 10 );
printinfo( 70, 60, 50 );
五、匿名函数
在C#、Java中经常会用到匿名函数,Python中可以使用lambda关键词创建小型匿名函数,这种匿名函数是由于省略了def声明函数的标准步骤而得名的。
基本语法
lambda [arg1 [,arg2,.....argn]]:expression
g = lambda x : x**2
冒号前面是参数,可以多个参数,用逗号分隔,冒号右边是返回值
匿名函数适用的场所:
1. 使用Python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
2. 对于一些抽象的,不会别的地方再复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。
3. 使用lambda在某些时候让代码更容易理解。
2. 对于一些抽象的,不会别的地方再复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。
3. 使用lambda在某些时候让代码更容易理解。