搞懂Python函数的定义与调用
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def 函数名(参数列表):
# 实现特定功能的多行代码
[return [返回值]]
不建议读者使用 a、b、c 这类简单的标识符作为函数名,函数名最好能够体现出该函数的功能。
形参列表:设置该函数可以接收多少个参数,多个参数之间用逗号( , )分隔。
[return [返回值] ]:整体作为函数的可选参参数,用于设置该函数的返回值。也就是说,一个函数,可以用返回值,也可以没有返回值。
def animal():
animal = ["cow","dog","cat"]
return animal
def animal(param):
if (param == "cow"):
print("param is cow")
def animal(param):
if (param == "cow"):
print("param is cow")
animal("cow");
param is cow
必需参数
关键字参数
默认参数
不定长参数
def animal(param1,param2):
if (param1 == "cow"):
print("param1 is cow")
animal(param2="cat",param1="cow");
param1 is cow
def animal(param="cow"):
if (param == "cow"):
print("param is cow")
animal();
param is cow
def functionname([formal_args,] *var_args_tuple ):
function_suite
return ([expression])
def animal(arg1, *vartuple):
print(arg1)
print(vartuple)
animal("cow","cat","dog","lion");
cow
('cat', 'dog', 'lion')
def functionname([formal_args,] **var_args_dict ):
function_suite
return ([expression])
def animal(arg1, **vardict):
print(arg1)
print(vardict)
animal("cow",a="cat",b="dog",c="lion");
cow
{'a': 'cat', 'b': 'dog', 'c': 'lion'}
lambda 只是一个表达式,函数体比 def 简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
lambda [arg1 [,arg2,.....argn]]:expression
sum = lambda arg1, arg2: arg1 + arg2
print("相加后的值为 : ", sum( 20, 20 ))
print("相加后的值为 : ", sum( 10, 20 ))
相加后的值为 : 40
相加后的值为 : 30
def animal():
animal = ["cow","dog","cat"]
return animal
# 调用animal函数>
ret = animal()
print("函数 : ", animal())
函数 : ['cow', 'dog', 'cat']
def recursion(k):
if (k > 0):
result = k + recursion(k-1)
print(result)
else:
result = 0
return result
recursion(6)
1
3
6
10
15
21