函数
1.定义函数
a.普通函数定义
通过def关键字定义函数,之后跟函数名称和小括号包裹的参数列表,之后跟一个冒号,在其后编写函数体。
函数体的第一行内容 ,可以直接是一个字符串,此字符串不影响函数体的内容,相当于是该方法的文档声明,用来描述函数的功能,可以在后续查看。
函数内容需要缩进。
通过return关键字在函数内部返回,并可以选择性返回一个返回值,如果return后没有明确的返回值,则默认返回的是一个None。
def functionname( parameters ):
“函数_文档字符串”
function_suite
return [expression]
示例:
#定义函数
def sumx(n1,n2):
"两数求和函数"
return n1 + n2
b.函数直接量定义函数
通过lambda表达式来声明一个函数,lambda关键字之后跟参数列表,再跟冒号,之后是函数的体,这种方式声明的函数函数体只能是一个表达式,如果函数体有多条语句,则无法通过此方式定义。
funcx = lambda arg1, arg2: arg1 + arg2;
案例:
#函数直接量定义函数
sumx = lambda n1,n2:n1+n2;
print(sumx(2,3))
2.函数的调用
` 通过函数名之后跟小括号传入参数值就可以用调用函数了
函数调用过程中,也可以在实参列表中明确的指定实参要赋值给哪一个形参,从而实参 列表的顺序可以和形参列表不同
#调用函数
r = sumx(2,3)
print(r)
r = sumx(n2 = 2,n3 = 3)
3.缺省参数
在定义函数的过程中,可以为全部或部分函数参数指定默认值,则在调用函数的过程中可以 选择性的不传入这些参数,则这些参数采用默认值执行函数。
#缺省参数
def sumx2(n1,n2=10):
return n1 + n2
print(sumx2(2,3))
print(sumx2(2))
4.不定长参数
类似于java中的可变参数,python中的函数也可以具有不定长的参数,未来再调用时可以传入0个或多个实参,而在函数的内部可以按照使用数组的方式使用该不定长参数。
可以通过在形参名称之前加*号,将参数设定为不定长参数。
一个函数中,不定长参数最多只能有一个,且必须出现在函数参数列表的最后一位。
#不定长参数
def sumx4(*nums):
sum = 0
for n in nums:
sum += n
return sum
r = sumx4(2,3,4)
print(r)
r = sumx4(2,3,4,5,6)
print(r)
5.函数是一等公民
在python中函数是一等公民,可以将函数理解为一种特殊的对象,函数名指向该对象的引用。具有完整的能力,属性能做的函数都可以做。
a.作为类的成员
#函数作为类的成员
class Person:
name="zs"
age=19
def eat(self,food):
print("吃。。。"+food)
def sleep(self):
print("睡。。。")
b.作为局部成员
#函数作为局部成员
def eat(food):
zl = "孜然"
def cook(food):
return "做熟"+food +"加" + zl
print("吃"+cook(food))
c.高阶函数作为方法参数
#高阶函数 将函数作为方法参数传递
def eatx(food,how2Cook):
food2 = how2Cook(food)
print("吃。。"+food2)
def cookYRC(food):
return "烤熟"+food
eatx("羊肉串",cookYRC)
eatx("涮羊肉",lambda food:"煮熟"+food)
d.高阶函数作为方法返回值
#高阶函数 将函数作为另一个函数 的返回值返回
def lookUpCaiPu(cai):
if cai == "羊肉串":
def cookYRC(food):
return "烤熟"+food
return cookYRC
elif cai == "涮羊肉":
return lambda food:"煮熟"+food;
else:
return lambda food:"做熟"+food;
cookFunc= lookUpCaiPu("涮羊肉")
print(cookFunc("羊肉"))