一、函数的定义
格式:def 函数名(参数列表):
注:
-
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。即使该函数不需要接收任何参数,也必须保留一对空的圆括号
-
函数形参不需要声明其类型,也不需要指定函数返回值类型
-
参数列表是调用该函数时传递给它的值,可以有零个、一个或多个,当传递多个参数时各参数由逗号分隔
-
函数内容以冒号起始,并且缩进(函数体相对于def关键字必须保持一定的空格缩进)
#下面的定义是一个求阶乘的函数
def factorial(num):result = 1for n in range(1, num + 1):result *= nreturn result
x = factorial(4)
y = factorial(10)
print(x)
print(y)
运行结果:
二、返回值
-
return [表达式] 结束函数,选择性地返回一个值给调用方。
-
函数可以没有return,此时函数并不返回值,不带表达式的return相当于返回 None。
-
如果程序有多个返回值,可以封装为列表返回,也可以直接返回多个值,如果是直接返回多个值,python自动封装为元组
import math
def gcd_lcm(a,b):#求最大公约数x = math.gcd(a,b)#求最小公倍数y = a * b // x
# return [x,y]return x,y# z = gcd_lcm(12,20)
# print(z)
## 使用序列解包获取多个返回值
mygcd,mylcm = gcd_lcm(12,20)
print(mygcd)
print(mylcm)
运行结果:
三、函数的嵌套
递归时函数自己调用自己。递归时要注意设置结束条件,虽然Python中有限定递归的总数,但是还是要注意的。
四、函数的参数
1、位置参数:
调用函数时实参和形参的顺序必须严格一致,并且实参和形参的数量必须相同。否则会报错。
2、默认值参数
如果大部分的参数是某个值,可以设置为默认参数,简化函数的调用
注:
-
默认值参数必须出现在函数参数列表的最右端,任何一个默认值参数右边不能有非默认值参数。
-
如果默认参数不是在参数最后,则python解释器会报错。
-
默认参数必须指向不变对象,比如str,int,NONE等。而默认参数是list、dict等是可变对象时,会导致数据错误
-
f.__defaults__ #查看函数默认值参数的当前值
3、可变参数
*parameter用来接受多个实参并将其放在一个元组中
def value(a,b,*c):'''a:操作数b:操作符号(+—*/)c:操作数功能:用a和c进行b的操作'''if b=='+':for item in c:a=a+item elif b=='-':for item in c:a=a-itemreturn a
y=value(20,'-',4,5,6)
print(y)
z=value(20,'+',4,5)
print(z)
x=value(20,'+',5,6)
print(x)
运行结果:
4、关键字参数