函数定义:
括号中间写需要传入的参数和自变量,函数的第一行语句可以选择性地使用文档字符串(函数说明)
函数内容以冒号起始,并且缩进。
以 return [表达式] 结束函数,选择性地返回一个值给调用方。
不带表达式的 return 相当于返回 None。
def function_name(parameters):
"函数_文档字符串"
function_suite
[return [expression]]
函数参数:
1,参数传递:
Python 都是按引用(指针)传递参数的(形式参数获得了和实际参数相同的指针)
所以函数中对形式参数的修改会改变传入的实际参数,但如果重新给形式参数赋值(即新的引用)是不会改变实际参数的,因为实际参数的指针没有变。
2,参数类型:
必备参数
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样
定义:def printme(str1,str2):
print str1,str2
调用:printme('123','456')
关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
定义:def printme(str1,str2):
print str
调用:printme(str2='123',str1='333')
缺省参数
调用函数时,缺省参数的值如果没有传入,则被认为是默认值。
定义:def printme(str='123'):
print str
调用:printme()
不定长参数
两种类型,一种存入列表 list,另一种存入字典 dict
定义:def printme(*strlist,**strdict):# 同时有字典和列表时需要要把列表放前面
print strlist,strdict
调用:printme('8',9,a=1,b=2,c=3)
变量作用域:
局部变量,默认类型全局变量: 在函数中通过 global 声明, 可以操作函数外变量。
定义:def printme(str2):
global str1
str1='2'
print str1,str2
调用:str1=''
printme('123')
返回值:
return 语句 [表达式] 退出函数,选择性地向调用方返回一个表达式。不带参数值的 return 语句返回 None。
可以返回多个值 return a,b,c
匿名函数:
使用 lambda 来创建匿名函数。lambda 的主体是一个表达式,而不是一个代码块,函数体比 def 简单很多。仅仅能在 lambda 表达式中封装有限的逻辑进去。
lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。虽然 lambda 函数看起来只能写一行,却不等同于 C 或 C++ 的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
lambda 函数的语法:lambda [arg1 [,arg2,.....argn]]:expression
定义:sum = lambda arg1, arg2: arg1 + arg2
调用:print "相加后的值为 :", sum(10, 20)
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。