python基础(part10)--函数

网友投稿 378 2022-08-31


python基础(part10)--函数

鄙人学习笔记 开发工具:Spyder

文章目录

​​函数function​​

​​定义​​​​作用​​​​定义函数​​​​调用函数​​​​返回值​​

​​举个例子​​

​​可变与不可变类型数据在传参时的区别​​

​​举个例子1​​​​举个例子2​​

​​函数参数​​

​​实参传递方式​​​​形参定义方式​​

​​默认参数​​​​位置形参​​

​​星号元组形参​​

​​命名关键字形参​​

​​双星号字典形参​​

​​参数自左至右的顺序​​

函数function

定义

函数用于封装一个特定的功能,表示一个功能或者行为。函数是可以重复执行的语句块,可以重复调用。

作用

函数可以提高代码的可重用性和可维护性。(注意函数命名和清晰性)

定义函数

语法

def 函数名(形式参数): 函数体

说明

def 关键字

全称是define, 意味"定义"

函数名

对函数体中语句的描述,命名规则与变量名相同

形式参数

方法定义者要求调用者提供的信息

函数体

完成该功能的语句

备注:函数的第一行语句,可以选择性地使用文档字符串存放函数与参数的说明。

调用函数

语法

函数名(实际参数)

返回值

定义

方法定义者告诉调用者的结果

语法

return [表达式]

说明

①表达式就是需要返回的结果 ②若return后不带表达式,相当于返回None ③若不带return语句,函数执行完后返回None(相当于在最后加了一条 return None 语句)

举个例子

代码:

def my_add(num01, num02): result = num01 + num02 return resultre = my_add(1, 2)print(re)

可变与不可变类型数据在传参时的区别

不可变类型数据

可变类型数据

传参说明

不可变类型的数据传参时,函数内部不会改变原数据的值。 可变类型的数据传参时,函数内部可以改变原数据。

举个例子1

代码:

def fun01(fun_num01): fun_num01 = 2 print("fun_num01:"+ str(fun_num01))number01 = 1fun01(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 = 300number01 = 1list01 = [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})

位置形参

语法

def 函数名(形参名1, 形参名2, ...): 函数体

星号元组形参

语法

def 函数名(*元组形参名): 函数体

作用

收集多余的位置传参

说明

①一般情况下,元组形参名为’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

参数自左至右的顺序

位置形参 -> 星号元组形参 -> 命名关键字形参 -> 双星号字典形参


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python基础(part11)-作用域LEGB
下一篇:Java深入了解数据结构之栈与队列的详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~