当前位置 : 主页 > 编程语言 > python >

python基础(part10)--函数

来源:互联网 收集:自由互联 发布时间:2022-06-15
鄙人学习笔记 开发工具:Spyder 文章目录 ​​函数function​​ ​​定义​​ ​​作用​​ ​​定义函数​​ ​​调用函数​​ ​​返回值​​ ​​举个例子​​ ​​可变与不可变类

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



文章目录

  • ​​函数function​​
  • ​​定义​​
  • ​​作用​​
  • ​​定义函数​​
  • ​​调用函数​​
  • ​​返回值​​
  • ​​举个例子​​
  • ​​可变与不可变类型数据在传参时的区别​​
  • ​​举个例子1​​
  • ​​举个例子2​​
  • ​​函数参数​​
  • ​​实参传递方式​​
  • ​​形参定义方式​​
  • ​​默认参数​​
  • ​​位置形参​​
  • ​​星号元组形参​​
  • ​​命名关键字形参​​
  • ​​双星号字典形参​​
  • ​​参数自左至右的顺序​​




函数function

定义

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

作用

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

定义函数

  • 语法
def 函数名(形式参数):
函数体
  • 说明

def 关键字

全称是define, 意味"定义"

函数名

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

形式参数

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

函数体

完成该功能的语句

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

调用函数

  • 语法
函数名(实际参数)

返回值

  • 定义

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

  • 语法
return [表达式]
  • 说明

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

举个例子

代码:

def my_add(num01, num02):
result = num01 + num02
return result

re = my_add(1, 2)
print(re)

结果:
python基础(part10)--函数_函数体

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

  • 不可变类型数据

python基础(part10)--函数_元组_02

  • 可变类型数据

python基础(part10)--函数_元组_03

  • 传参说明

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

举个例子1

代码:

def fun01(fun_num01):
fun_num01 = 2
print("fun_num01:"+ str(fun_num01))

number01 = 1
fun01(number01)
print("number01:" + str(number01))

结果:
python基础(part10)--函数_数据_04

备注: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)

结果:

python基础(part10)--函数_元组_05

函数参数

实参传递方式

①位置传参-序列传参
②关键字传参-字典传参

  • 例子

代码:

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})

结果:
python基础(part10)--函数_函数体_06

形参定义方式

默认参数

默认参数,可让调用者有选择性的传递需要的信息

  • 例子

代码:

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})

结果:
python基础(part10)--函数_元组_07

位置形参
  • 语法
def 函数名(形参名1, 形参名2, ...):
函数体
星号元组形参
  • 语法
def 函数名(*元组形参名):
函数体
  • 作用

收集多余的位置传参

  • 说明

①一般情况下,元组形参名为’args’
②形参列表中最多只能有一个星号元组形参

  • 例子1

python基础(part10)--函数_数据_08

  • 例子2

python基础(part10)--函数_函数体_09

命名关键字形参

我们先看2个例子,来感受一下命名关键字传参。

  • 例子1(强制实参使用关键字传参)

代码:

#若*放在最开头,则强制我们使用关键字传参
def fun01(*,a,b):
print(a, b)

#如果我们不通过关键字传参,则运行下面这行代码会报错
fun01(1, 2)

结果:
python基础(part10)--函数_数据_10
报错!

  • 例子2

代码:

#b必须使用关键字传参,否则会报错
def fun01(*a,b):
print(a, b)

fun01(1, 2, b = 2)

结果:
python基础(part10)--函数_数据_11

双星号字典形参
  • 例子1

python基础(part10)--函数_数据_12

  • 例子2

python基础(part10)--函数_数据_13

参数自左至右的顺序

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

上一篇:python基础(part11)-作用域LEGB
下一篇:没有了
网友评论