拜读的是计算机等级考试官方推荐教程 《全国计算机等级考试二级教程Python语言程序设计(2022年版)》,该书目可用于应试备考中知识点梳理,同时也很适合初学者使用。本文将记录本人在阅读学习过程中的总结与思考。
其余科目大纲教材可访问:全国计算机等级考试官网
Python语言通过保留字def
定义函数,语法形式如下:
def <函数名>(<参数列表>):
<函数体>
return <返回值列表>
定义后的函数需要经过“调用”才能得到运行。调用的基本方式如下:
<函数名>(<实际赋值参数列表>)
通过函数名调用函数功能,对函数的各个参数赋予实际值,实际值可以是实际数据,也可以是在调用函数前已定义过的变量
# 定义一个对整数n求阶乘的函数
def fact(n):
s = 1
for i in range(1, n+1):
s *= i
return s
运行效果如下:
>>> print(fact(10)) # 输出10!
>>> print(fact(5)) # 输出5!
3628800
120
函数被调用后,使用实际参数(赋予形式参数的实际值)参与函数内部代码的运行,如果有结果则进行输出。
函数执行结束后,根据return
保留字的指示决定是否返回结果,若返回结果,则结果将被放置到函数被调用的位置,函数使用完毕,程序继续运行。
函数可以有返回值,也可以没有返回值,如
def hi():
print('Hello Python')
# return 'Hello Python'
这个代码示例既表示了一个无参函数,也表示了一个无返回值函数,在人为未定义返回值的情况下,默认返回值为None。运行上述代码,输出为:
>>> print(hi())
Hello Python
None
Python最小函数可以不表达任何功能,如下:
def f():
pass
其中,保留字pass
表示不进行任何操作,起到占位的作用,因为函数体内部总要编写一行代码,pass用来表示这种占位。对f()的调用不实现任何功能。
利用type()
获取函数的类型。函数采用其定义的名字表达,具体为function类型,这是一种Python的内置类型。然而,若调用函数,则类型为返回值的类型。
>>> def f(x):
return x+1
>>> print(type(f))
>>> print(type(f(1)))
<class 'function'>
<class 'int'>
函数的参数在定义时可以指定默认值,当函数被调用时,如果没有传入对应的参数值,则使用函数定义时的默认值替代。带有可选参数的函数定义语法形式如下:
def <函数名>(<非可选参数列表>, <可选参数> = <默认值>)
<函数体>
return <返回值列表>
以两个数的乘法计算函数为例,设y
为可选参数:
>>> def multiply(x,y=10):
print(x*y)
>>> multiply(90)
990
>>> multiply(90,2)
198
注意:可选参数一般放置在非可选参数后面,即定义函数时,先给出所有非可选参数,然后再分别列出每个可选参数及对应的默认值。
Python支持函数按照参数名称方式传递参数:
>>> def multiply2(x,y=10):
print(x*y)
>>> multiply2(x=99)
990
>>> multiply2(y=2,x=10)
20
注意:采用参数名称传递方式不需要保持参数传递的顺序,参数之间的顺序可以任意调整,只需要对每个必要参数赋予实际值即可
>>> def multiply3(x,y=10):
return x*y, x+y
>>> s=multiply3(99,2)
>>> print(s)
(198, 101)
当函数使用return返回多个值的时候,可以用一个变量或多个变量保存结果:
>>> a,b = multiply3(10,5)
>>> print(a)
50
>>> print(b)
15
def m(x):
try:
if x>0:
return x+1
else:
return x-1
except:
return 0
根据程序中变量所在的位置和作用范围,变量分为局部变量和全局变量
局部变量指在函数内部定义并使用的变量,仅在函数内部使用,且作用域也在函数内部(仅在函数内部有效),当函数退出时变量将不再存在
>>> def multiply(x,y=10):
z = x*y # z为函数内部局部变量
return z
>>> s = multiply(99,2)
>>> print(s)
198
>>> print(z)
Traceback (most recent call last):
File "D:\downloads\桌面\计算机二级Python\函数\变量.py", line 7, in <module>
print(z)
NameError: name 'z' is not defined
全局变量指的是在函数之外定义的变量,在程序执行全过程有效。全局变量在函数内部使用时,需要提前使用保留字global
声明,语法如下:
global <全局变量>
>>> n = 2 # n是全局变量
>>> def multiply2(x, y=10):
global n # 全局变量声明
return x*y*n # 使用全局变量n
>>> s = multiply2(99, 2)
>>> print(s)
396
若未使用保留字global
声明,即使名称相同,也不是全局变量:
>>> n = 2 # n是全局变量
>>> def multiply3(x, y=10):
n = x*y
return n # 此处n不是全局变量
>>> s = multiply3(99, 2)
>>> print(s)
198
>>> print(n) # 不改变外部全局变量的值
2
函数封装的直接好处是代码复用,避免相同功能代码在被调用处重复编写
耦合性指程序结构中各模块之间相互关联的程度,它取决于各模块间接口的复杂程度和调用方式。耦合性是影响软件复杂程度和设计质量的一个重要因素。
利用函数将程序合理划分为多个功能模块,并基于模块设计程序是一种常用的程序设计方法,被称为“模块化设计”
模块化设计指通过函数的封装功能将程序划分为主程序、子程序和子程序间关系的表达。一般有如下两个要求:
个人整理了一些Python习题与相应的解析,可见专栏:Python编程习题
None
时间 | 内容 |
---|---|
2023.2.9 | 首次发表 |
2023.2.11 | 新增部分内容 |
编辑不易,点赞收藏关注!