引言
这一篇博客将讲解关于Python的函数部分,话不多说就立马开始吧
一.定义
函数相当于是将一些常用的代码集合,然后可以通过调用这个函数就可以实现相应的功能,这里给出Python中函数的写法
def + 函数名 + (形式参数):
函数内容(注意在内容之前要空格)
这里给出一个add函数作为例子
def add(a, b):
return a + b
print(add(4 + 5))
另外,为了注释函数的作用,相比于普通的#注释,我们可以使用上下加上三个”,以此实现函数的注释,如下
def add(a, b):
"""
计算两数的和
"""
return a + b
二.函数参数
- 1. 使用
与C++相同,本质是把实参赋值给形参,有两种使用方法
1.1 直接传值
就是依次传值,按照顺序
def printname(name1, name2):
print(f"name1 : {name1}")
print(f"name2 : {name2}")
printname('mzk', 'ena')
1.2 指定参数名传值
可以指定参数名传值,这样就可以不用在意传值的顺序,如下
def printname(name1, name2):
print(f"name1 : {name1}")
print(f"name2 : {name2}")
printname(name2 = 'mzk', name1 = 'ena')
- 2. 默认值
对于函数的参数我们可以提前给出默认值,但是有以下几个限制条件
a. 单参数可以直接给
b. 多参数只能从右往左给默认值,并且不能左右参数都给默认值,但是中间那个参数没有默认值,与C++相同
c.不推荐默认值为列表或者字典,因为二次调用的时候列表和字典是使用过一次的,并不会重建默认值,但是对于空列表或者字典,可以给定None当作默认值
三.函数传参
这一节主要讲的是传参修改的问题
- 1. 简单类型
对于简单类型的形参,不会修改实参的值,例如整数(int)
- 2. 复杂类型
对于复杂类型的形参,在函数中修改列表会修改掉实参的值,例如列表,字典
当然也有解决方法,例如传一个切片就可以解决,相当于传了一个临时变量
四.函数返回值
- 1. 基本语法
主要是通过return返回返回值,这里给一个add函数作为例子
def add(a, b):
return a + b
- 2. return返回值
a. 数值
b. 字符串
c. 布尔值
d. 列表
…………
当然,也可以返回值,也可以返回一个函数,这就牵扯到了递归函数
五.星号*
这里指的是在形参上加星号的意思,可以使传的参数不被固定死
- 1. 单星号 – 元组
例如*args,相当于由所有实参组成的,名为args的元组,这里给出一个例子
def add(*nums):
sum = 0;
for n in nums:
sum += sum
return sum
sum = add(1, 3, 4, 5, 6, 7)
print(sum)
这样无论传了多少个参数,都会直接归到args这个元组中
- 2. 双星号 – 字典
例如**args,相当于由所有实参组成的,名为args的字典,但是只能接受关键字传字典,这里给出例子
def printnames(**names):
for name in names.values():
print(name)
printnames(name1 = 'mzk', name2 = 'ena', name3 = 'kfy')
#或者这样也可以
printnames(**{'name1' : 'mzk', 'name2' : 'ena', 'name3' : 'kfy'})
注意:当有多个形参时,只能把带星号的形参放在最后,然后按照顺序,剩下的所有参数都传给带星号的形参
六.函数报错
这里给出几个常见的报错信息,方便你排查
- 1.名称错误
Did you mean: ‘xxx’?
- 2. 参数少了
missing ? required positional argument: ‘?’
- 3. 参数多了
takes ? positional arguments but ? were given
- 4. 类型不对
unsupported operand type(~) ~~~~
总结
至此函数的基本内容就讲解完了,希望对你有帮助

评论(0)
暂无评论