鄙人学习笔记 开发工具:Spyder 文章目录 函数function 定义 作用 定义函数 调用函数 返回值 举个例子 可变与不可变类
鄙人学习笔记
开发工具:Spyder
文章目录
- 函数function
- 定义
- 作用
- 定义函数
- 调用函数
- 返回值
- 举个例子
- 可变与不可变类型数据在传参时的区别
- 举个例子1
- 举个例子2
- 函数参数
- 实参传递方式
- 形参定义方式
- 默认参数
- 位置形参
- 星号元组形参
- 命名关键字形参
- 双星号字典形参
- 参数自左至右的顺序
函数function
定义
函数用于封装一个特定的功能,表示一个功能或者行为。函数是可以重复执行的语句块,可以重复调用。
作用
函数可以提高代码的可重用性和可维护性。(注意函数命名和清晰性)
定义函数
- 语法
函数体
- 说明
def 关键字
全称是define, 意味"定义"
函数名
对函数体中语句的描述,命名规则与变量名相同
形式参数
方法定义者要求调用者提供的信息
函数体
完成该功能的语句
备注:函数的第一行语句,可以选择性地使用文档字符串存放函数与参数的说明。
调用函数
- 语法
返回值
- 定义
方法定义者告诉调用者的结果
- 语法
- 说明
①表达式就是需要返回的结果
②若return后不带表达式,相当于返回None
③若不带return语句,函数执行完后返回None(相当于在最后加了一条 return None 语句)
举个例子
代码:
def my_add(num01, num02):result = num01 + num02
return result
re = my_add(1, 2)
print(re)
结果:
可变与不可变类型数据在传参时的区别
- 不可变类型数据
- 可变类型数据
- 传参说明
不可变类型的数据传参时,函数内部不会改变原数据的值。
可变类型的数据传参时,函数内部可以改变原数据。
举个例子1
代码:
def fun01(fun_num01):fun_num01 = 2
print("fun_num01:"+ str(fun_num01))
number01 = 1
fun01(number01)
print("number01:" + str(number01))
结果:
备注:str( )是python自带函数,是python保留的关键字,定义变量时应该避免使用str作为变量名。如果在使用str( )函数之前已经定义过str变量,则会出现TypeError: ‘str’ object is not callable这个报错。可以使用del str将str变量删除。
举个例子2
代码:
def fun01(num01, listA, listB):num01 = 100
listA[0] = 200
listB = 300
number01 = 1
list01 = [2, 3]
list02 = [4, 5, 6]
fun01(number01, list01, list02)
print(number01)
print(list01)
print(list02)
结果:
函数参数
实参传递方式
①位置传参-序列传参
②关键字传参-字典传参
- 例子
代码:
def fun01(a, b, c):print(a, b, c)
#位置传参:实参与形参的位置依次对应
fun01(1, 2, 3)
#序列传参:用*将序列拆分后与形参的位置依次对应
fun01(*[4, 5, 6])
#关键字传参:实参根据形参的名称进行对应
fun01(b = 2, a = 1, c = 3)
#字典传参:用**将字典拆分后与形参的名字进行对应
fun01(**{"b":20, "c":10, "a":5})
结果:
形参定义方式
默认参数
默认参数,可让调用者有选择性的传递需要的信息
- 例子
代码:
def fun01(a = 0, b = 1, c = 2):print(a, b, c)
fun01()
fun01(1)
fun01(*[2, 3])
fun01(b = 10)
fun01(**{"a":-1, "c":32})
结果:
位置形参
- 语法
函数体
星号元组形参
- 语法
函数体
- 作用
收集多余的位置传参
- 说明
①一般情况下,元组形参名为’args’
②形参列表中最多只能有一个星号元组形参
- 例子1
- 例子2
命名关键字形参
我们先看2个例子,来感受一下命名关键字传参。
- 例子1(强制实参使用关键字传参)
代码:
#若*放在最开头,则强制我们使用关键字传参def fun01(*,a,b):
print(a, b)
#如果我们不通过关键字传参,则运行下面这行代码会报错
fun01(1, 2)
结果:
报错!
- 例子2
代码:
#b必须使用关键字传参,否则会报错def fun01(*a,b):
print(a, b)
fun01(1, 2, b = 2)
结果:
双星号字典形参
- 例子1
- 例子2
参数自左至右的顺序
位置形参 -> 星号元组形参 -> 命名关键字形参 -> 双星号字典形参