函数
前言:
函数在python中算是一个比较大的话题了,涉及的内容也比较多。当我们慢慢学习在
为什么会有函数这个东西?
函数(function),与数学中的函数是不同的概念。
编程中的函数,具体是来说,用来实现一些特定功能的代码段组成的一个整体。
因此,当我们想要实一现个具体的功能的时候,就可才考虑用函数的逻辑去报他们分门别类的去实现与管理。
内容提要
函数的定义方法
函数的参数及分类
几种特殊的函数
内容详情
函数定义
def 函数名(参数列表):
函数体
定义就是这么简单粗暴。
函数参数
python中函数的参数内容比较多, 我们一一来请解
2.1 不含参:
def func():
pass
不含参的函数,在类的外面,还是比较少见的,一般都用于类内部,作为类的文法比较常见。
2.1 常规参数/命名参数
# 定义函数
def func2(a, b):
print(a,b)
# 调用函数
func(2,3) # 会打印2, 3,常规参数如果不写参数名,会按顺序赋值给相应的变量
# 还可以这样调用:
func(b=3, a=2) # 也会打印2, 3 , 当我们用参数名直接赋值的时候,可以忽略参数的顺序.
2.2 默认值参数
# 定义函数,参数b有一个默认值2
def func(a,b =2):
print(a,b)
# 函数调用
# 正常调用
func(2,3) # 输出2, ,3
# 省略b的值
func(1) # 输出1, 2 ,当没有传够参数的时候有默认值的参数,会自己动用默认值
注意:
默认参数要定义在必须参数之后
2.3 不定长参数
# 不定长参数需要在参数名前加*
# 函数定义
def func2(a,b, *c):
print(a,b)
print(c)
def func2(a,b=2,*c):
print(a,b)
print(c)
# 函数调用
func2(2,3,4,5,6,7) # 输出第一行2,3 第二行(4,5,6,7)
func3(2,3,4,5,6,7) # 输出第一行2,3 第二行(4,5,6,7)
注意:
命名参数必须在不定长参数之前
不定长参数其实是以元组的形式传入函数的,元组的名称就是我们定义的时候的*后面的名字
有默认值参数,默认值参数也必须的不定长参数之前,当参数个数>必须参数与默认参数个数时,会按照顺序给到必须参数与默认参数,然后多余的参数才会传入不定长参数
不定长参数最多只能有一个
不定长参数的参数名通常用args.
2.4 关键字参数
# 定义函数,用到了必须参数, 默认值 参数, 不定长参数与关键字参数
# 关键字参数在参数名+ **
def fuc4(a,b=2,*c, **d):
print(a,b)
print(c)
print(d)
# 函数调用
func4(2,3,5,6,7,name ="tome" ,age =4)
输出内容:
2 3 # a =2 , b =3
(5, 6, 7) # 元组c = (5,6,7)
{'name': 'tome', 'age': 4} # 关键字参数d = {"name": "tome", "age" :4}
注意:
关键字参数的本质是一个字典
关键字数要在不定长参数之后
总结:
Python中函数的参数有四种:
必须参数
默认值参数
不定长参数
关键词参数
在定义函数时,如果同时存在两种及以上类型的参数时,其顺序是:
(1) 必须参数,可以有多个
(2) 默认值参数,可以有多个
(3) 不定长参数 ,只能有一个
(4) 关键词参数, 只能一个个
在调用函数时,如果有多个类型的参数,其参数赋值:
(1) 必须参数
(2) 如果没有不定长参数,则默认值 参数可以省略
如果有不定长参数,则先赋值默认值参数,多余的参数传入不定长参数,作为元组的元素
(3) 如果有关键字参数,则命名参数必须先赋值,否则会与关键字参数冲突.(即关键字参数的关键字不能与前面的命名参数的名字是一样的)
后记
python中的函数参数类型灵活多变.
需要在使用的时候,多多体会不同的参数类型给予使用者的方便.
函数中还有一种比较特殊的函数类型(被Python之父都嫌弃的函数类型):lambda函数(蓝达).以后再讲吧.它不属于正常的函数.使用场合也比较特殊.