第五章:Python函数和代码服用
总览
5.1函数的基本使用
函数是一段具有特定功能的、可重用的语句块,通过函数名来表示和调用。函数包括两部分:函数的定义和函数的使用。
使用函数的目的:降低编程难度和增加代码复用。
5.1.1 函数的定义
Python语言通过保留字def定义函数,语法如下:
def 函数名(参数列表):
函数体
return 返回值列表
参数列表中的参数是 形式参数,简称“形参”。相当于实际参数的一种符号表示或符号占位符。
函数可以没有return返回值,没有返回值的函数仅仅代表执行一段代码功能。
5.1.2 函数的使用
函数的定义也叫函数声明,定义后的函数不能直接运行,需要经过调用才能执行。以下列实例演示函数的声明和调用
# 定义一个对整数n求阶乘的函数
def fact(n):
s = 1
for i in range(1,n+1):
s *= i
return s
# 调用该函数
print(fact(10))
# 输出结果
3628800
每次函数调用可以提供不同的参数作为输入,以实现对不同数据的处理。函数的执行和黑盒相似,使用函数不需要知道其内部代码如何实现,只需要知道函数的输入和输出方式即可。
具体来说函数的使用分为四步:函数定义=>函数调用=>函数执行=>函数返回。
【编程程中大量使用函数已成为一种编程范式,叫做函数编程范式。主要思想就是将程序过程尽量写成一系列函数调用,这能使得代码编写更加简洁、更易于理解,是中小规模软件项目中最常用的编程方式】
Python中,函数也是有类型的,具体为function类型,这是Python的一种内置类型,但是注意,调用函数则类型为返回值的类型。
Python中的最小函数可以不表达任何功能
def f():
pass
其中,保留字pass表示不进行任何操作,起到占位作用,因为函数体内必须编写至少一行代码。
5.2函数的参数传递
5.2.1可选参数传递
函数的参数在定义时可以指定默认值,当函数被调用时,如果没有传递对应参数值,则用函数定义时的默认值代替。此处用一个实例演示:
>>> def mul(x,y = 10):
print(x*y)
>>> mul(99)
990
>>> mul(99,2)
198
需要注意的是,可选参数一般放在非可选参数的后面,即定义函数时,先给出所有非可选参数,然后再分别列出每个可选参数以及其对应值。
5.2.2参数名称传递
函数调用的时候一般都是使用默认位置顺序的方式传递函数,例如mul(99,2)中99传递给第一个参数x,2传递给第二个参数y。
Python语言同样可以使用按照参数名称的方式传递参数,此处用一个实例演示
>>> def mul(x,y = 10):
print(x*y)
>>> mul(x = 99)
990
>>> mul(y = 2,x = 99)
198
采用参数名称传递方式不需要保持参数顺序,只需要对每个参数赋予实际值即可,这种方法增强了程序的可读性。
5.2.3 函数的返回值
return语句用来结束函数并将程序返回导函数被调用的位置继续执行。
>>> def mul(x,y = 10):
return x*y
>>> s = mul(x = 99,y = 2)
>>>print(s)
198
return语句也可一次返回多个返回值,这些返回值形成一个元组,以元组的形式返回。
>>> def mul(x,y = 10):
return x*y,x+y
>>> s = mul(x = 99,y = 2)
>>>print(s)
(198,101)
>>>a,b = mul(x = 99,y = 2)
>>>print(a)
198
>>>print(b)
101
5.3 变量的作用域
根据变量在程序中的位置和作用范围,变量分为局部变量和全局变量。
局部变量仅在函数内部,作用域也仅在函数内部。当函数退出时,函数内的局部变量随之销毁。
全局变量则可以跨越多个函数。
全局变量是指在函数外定义的变量,在程序执行的全过程有效。
全局变量在函数内部使用需要提前使用保留字global声明
>>> n = 2 #全局变量 n
>>> def sum(x,y):
global n #此处的 n 因为使用global声明引用全局变量,所以这个n就是之前定义的全局变量n
return x+y+n
>>>s = sum(9,3)
14
>>> n = 2 #全局变量 n
>>> def sum(x,y):
n = x+y # 此时 n没有使用golbal声明,所以是函数内的局部变量。
return n
>>>s = sum(9,3)
12
global保留字声明变量作用域是Python中少有需要再次声明的情况,由于作用域不同,所以这种声明不可省略。
一点点说明
这一章节并没有多少理论知识点,主要在于编程中对于函数的理解和应用。个人也有自己的极其不活跃的小群,有兴趣的可以加一下。群内禁止广告,仅限学习交流。