|
文章目录
- 函数
- 函数定义格式
- 函数调用
- 默认参数和变长参数
- 默认参数
- 变长参数
- 变量的作用域
函数
编程语言中的函数,是一段可以被重复使用的代码片段,使用函数能够减少冗余的代码。
函数定义格式
def 函数名(形参列表):函数体return语句
说明一下:
- 一个函数可以有一个或者多个形参,也可以没有形参
- 一个函数中可以有一个或者多个return语句,执行到return语句时函数会立即执行结束,返回到调用位置
Python是动态类型语言,函数的形参和返回值都不必指定类型,因此一个函数可以支持多种不同类型的参数
多个返回值
Python中的函数可以有一个或者多个返回值,当有多个返回值时,使用 , 进行分隔。
比如:
def getSumAndDif(x, y):return x + y, x - ya = 10
b = 20
sum, dif = getSumAndDif(a, b)print(f'{a} + {b} = {sum}, {a} - {b} = {dif}')
说明一下:
Python当中一个函数可以返回多个值,本质是多元赋值所支持的。
如果函数调用者只想关注该函数的部分返回值,那么可以使用 _ 来忽略不想要的返回值。比如:
_, dif = getSumAndDif(1, 2)
print(dif)
函数调用
关于函数调用格式和调用方式与C/C++等语言相差不多,在这里就不过多阐述了,当然,这里比较难以理解的当属“递归”了,这是一个老生常谈的话题了,我之前也专门写过递归文章,看的老铁也比较多,感兴趣的老铁可以看这两篇:
蓝桥杯算法竞赛系列第二章——深入理解重难点之递归(上)
蓝桥杯算法竞赛系列第二章——深入理解重难点之递归(下)
默认参数和变长参数
默认参数
给函数的形参指定默认值,在调用函数时可以不必给带有默认值的形参传参,此时该形参将会使用我们指定的默认值。
注意一下:
带有默认值的形参应该放在没有默认值的右侧
代码示例:
def Add(data, val = 1):return data + valprint(Add(10)) # 11
print(Add(10, 2)) # 12
变长参数
如果想让函数接受任意多个参数,可以在函数定义的形参名称前加上 *
,这时函数将会接受一个参数元组,并且我们可以以形参名[下标]
的方式相应的访问传入的各个实参。比如:
def Func(*args):n = len(args)for i in range(n):print(args[i])Func(1)
Func(1, 2, 3)
变量的作用域
函数操作全局变量
需要注意的是,如果在函数内部尝试访问的变量不存在,就会尝试去全局作用域中查找。比如:
x = 10def Func():print(f'x = {x}')Func() # x = 10
但是如果想要在函数内部修改全局变量的值,就需要使用global关键字进行声明。
比如:
x = 10def Func():global x # 声明x = 20print(f'函数内部:x = {x}') # x = 20Func()
print(f'函数外部:x = {x}') # x = 20
如果在函数内部修改全局变量时没有使用global进行声明,那么此时Python解释器会认为你想在函数内部创建一个同名的局部变量,此时你的修改操作就不会影响到全局变量。比如:
x = 10def Func():# global x x = 20print(f'函数内部:x = {x}') # x = 20Func()
print(f'函数外部:x = {x}') # x = 10
If、for、while中的变量
Python中的If、for、while等语句块不会影响变量的作用域,因此在这些语句块中定义的变量,也可以在外面正常使用。比如:
for i in range(10):print(f'函数内部:i = {i}')print(f'函数外部:i = {i}') # i = 9
|
|