目录
结构
python中用关键字def来定义函数,后接函数名,形参列表,分号,之后是函数体。分号表示函数的声明部分属于同一个代码块,由于没有大括号来限定作用域,因此要注意函数体书写时的缩进。
分类
- 内置函数
内建函数:python中自带的函数。
第三方函数:其他开发者或组织编写并分享的函数。
- 自定义函数
开发者自己定义的函数。
函数体
python语言中函数的函数体部分可以是具体的代码,当然,开发时为了先建立起结构,通常不写函数体,此时可用关键字pass充当函数体。
def fun3(x, y):
y = y+x
def fun5():
pass
返回值
-
无返回值
函数结束后没有return语句,此时函数默认返回None,可以理解为函数没有返回值,但应注意,此时打印函数并不会报错,而是打印None;
- 单个返回值
函数体中return语句后有一个量,则返回一个返回值。
- 多个返回值
python语句提供函数返回多个返回值的机制,直接在return后按顺序写返回值,其返回时也会按顺序返回。
def fun4(x, y):
return x + y, x - y
a, b = fun4(3, 6)
print(a, b)
函数参数
- 位置参数
按照形参表上形参的位置顺序给形参传值,即我们平时最常见的参数形式。
- 默认参数
给形参赋上默认值,若实参给出则用实参,若不给出实参,则用默认值。应注意默认值 只能在形参表中从后往前给出。
def fun8(first,second=5): # 正确
return second
def fun9(first=5,second): # 错误
return second
- 不定长参数
传入长度不固定的参数,即传入list或tuple,属于地址传递,用*定义
def fun13(*n): #不定长参数
sum=0
for i in n:
sum=sum+i
return sum
n=[1,2,3]
print(fun(*n))
- 关键字参数
实参表中不用在意顺序,用参数的关键字限制参数的结合顺序。
def fun(x, y):
print('x+y=', x+y)
print('x*y=', x*y)
fun(x=1, y=3) #三种实参效果完全一样
fun(y=3, x=1)
fun(1, 3)
- 命名关键字参数
即用参数的关键字决定结合顺序,同时参数为不定长的,此时应注意的是如果没有可变数, 命名关键字参数就必须加一个“”号作为特殊分隔符。如果缺少“”,Python语言将无法辩别位 置参数和命名关键字参数。
def enroll(name, gender, *, age, city):
print(name, gender, age, city)
enroll('Jack', 'M', age='18', city='Beijing')
- 组合参数
多种参数类型的参数是有顺序的,定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。比如要定义一个函数,包含上述若干种参数,如下代码
def func(a, b, c=0, *args, **kw):
print('a=', a, 'b=', b, 'c=', c, 'args=', args, 'kw=', kw)
赋值
python语言中函数名可以赋值给其他变量,相当于给函数起了个别名,例如下面abs和a相当于一个函数。
a = abs
print(abs(-5))
print(a(-5))