首页 > 基础资料 博客日记
【2024】Python入门,详细基础教程,零基础入门,详细图文
2025-01-15 05:00:09基础资料围观107次
本文相关程序代码获取:
通过百度网盘分享的文件:
链接:https://pan.baidu.com/s/12hT6P2kKaDe_8JeFwuQrrA
提取码:f12b
前言
编程入门阶段,不用花时间学习和记忆细枝末节,这样会分散新手去理解核心逻辑的精力,而且很常用的知识也很容易被遗忘。真实世界里的编程不是闭卷考试,不需要把语言的细节全部记住,因为随时可以上网搜索和查阅技术文档。写多代码的人最后都会意识到,更重要的是具备搜索问题、发现答案和高效解决的能力,而不是成为记忆大师。
入门编程语言选择,建议Python、Java、JavaScript、C。其中优先选择Python,Python容易教,容易学,其一:语法简洁;其二:封装得更适合新手,对于新手来说,更应该先专注于理解逻辑,而不是计算机底层构造,Python无需了解指针和内存管理等计算机偏底层的内容;其三:内置函数非常多,已写好的工具较多。
Python的主要应用:脚本、网站后端、数据分析、机器学习等。
Java有完善的工具库和框架,稳定性高,适合做网站后端、安卓应用、桌面应用。
JavaScript主要应用在网站前端,也可以做网站后端、移动端、小程序。
C的好处自由度高,可以直接操作内存和计算机硬件,帮助了解底层构造。C的主要应用:硬件、嵌入式、操作系统等底层软件开发。
下图是以目的为导向的编程语言分类图。
总结:新手不用花过多时间纠结第一门语言学什么,因为很多编程语言的语法定义差别不大。只要学会第一门语言,之后的语言更容易上手。比起选择什么语言,更关键的是什么时候动起来。
名言:种一棵树最好的时间是十年前,其次是现在。
第一章 软件安装
一、Python解释器
机器是无法直接读懂编写的Python代码的,而是需要一个解释器作为中间的翻译,把代码转换为字节码后再执行,Python的运行过程为翻译一行,执行一行。
一般常说的安装Python,本质上指的是安装Python解释器。
二、代码编辑器
用于编写程序代码,代码编辑器种类非常多。
推荐使用PyCharm。
三、软件安装
基于Windows安装 Python解释器 和 PyCharm代码编辑器。
1、Python解释器 安装
Python官方网址: Welcome to Python.org
进入官网主页后,鼠标放在 【Downloads】 选项区域,会出现软件版本弹窗,点击软件版本直接下载软件。(网页会自动识别电脑系统,根据电脑系统适配相应的软件版本)
软件下载完成后,点击“打开文件”开始安装。
勾选安装界面“Add Python 3.10 to PATH”前面的选框。其目的是将Python添加到系统环境变量中,让电脑知道Python安装的位置。
然后点击“Install Now”开始安装。
如果安装过程中出现如下路径长度提示,点击此处并在弹窗中点击“是”,关闭弹窗后,此路径长度提示消除后,点击“Close”关闭安装界面,则安装结束。
2、检测Python解释器是否安装成功
在电脑的【搜索栏】中输入“cmd”。
点击“命令提示符”。
在弹出的“命令提示符”窗口中输入“python”,然后按回车键。
窗口中出现Python版本信息相关内容,即为安装完成,关闭该窗口即可。
3、PyCharm代码编辑器 安装
PyCharm官方网址:PyCharm:适用于数据科学和 Web 开发的 Python IDE
点击主页右侧【下载】/【Download】按钮。
进入下载页面,往下滑到黑色背景区域,点击黑色背景区域的【下载】按钮下载软件。
注:上部分白色背景区域为专业版,需付费,仅30天免费试用期。下方黑色背景区域为社区版,为免费版本。
软件下载完成后,点击“打开文件”开始安装。
在安装界面点击【Next】。
安装路径选择界面,可不修改,使用默认路径,点击【Next】。
安装选项界面,勾选“Create Desktop Stortcut”下方的选框,此项为安装完成后生成桌面图标;
安装选项界面,勾选“Create Associations”下方的选框,此项是将Python所有文件使用此软件(PyCharm)打开。
点击【Next】。
选择开始菜单文件夹界面,直接点击【Install】开始安装软件。
安装完成后,点击【Finish】完成安装。
4、打开PyCharm代码编辑器
双击打开桌面的PyCharm图标。
勾选同意用户协议选项,再点击【Continue】按钮。
数据共享界面。选择是否共享匿名数据,可以选择不共享,点击【Don’t Send】。
出现如下界面,则PyCharm已安装完成。
第二章 新建Python程序文件
一、PyCharm中文界面设置
打开PyCharm主界面,点击【Plugins】,即插件按钮。
在右侧搜索栏中输入“chinese”,然后按回车键搜索。
找到如图“汉”图标的插件,点击右侧的【Install】按钮下载插件。
重启PyCharm软件成效。
下图为重启后的主界面,语言已修改为中文。
二、新建项目
点击主页的【新建项目】按钮。
【位置】:项目文件存储目录,建议点击右侧文件夹按钮在电脑上新建一个文件夹,用于存储此项目所有文件。
基本解释器:右侧下拉选择已安装的解释器。
取消“创建main.py欢迎脚本”的勾选框。此项会自动创建一个初始文件,可以不需要此初始文件。
设置完成后点击右下角的【创建】按钮。
项目文件新建完成,下图为项目主界面,项目文件夹内自动创建添加了关联文件。项目文件夹内不要存放与项目无关的文件,容易混乱。
PyCharm自动创建的venv文件夹,为虚拟环境文件夹,表示此项目独立的Python虚拟环境,存在的目的是让不同的项目可以使用不同的Python解释器版本,还有安装的第三方库等。此文件夹不要移动,不要删除,不要往里面放任何东西。
注:如果在项目文件夹内无法找到venv文件夹。
原因大概率是在新建项目步骤时,勾选了“先前配置的解释器”,而不是“使用此工具新建环境Virtualenv”。
虚拟环境的好处是可以让不同项目使用不同解释器版本、第三方库等,适用于程序员做多个项目以及团队合作的情况。但对新手来说,用虚拟环境不是必要的,所以如果没有venv文件夹,也不用专门回去修改。
三、新建Python代码文件
右击项目文件夹名称;
在弹窗上点击【新建】;
在附属弹窗上点击【Python文件】;
在【新建Python文件】,选择【Python文件】;
在输入框输入文件名称,后缀加上【.py】,按回车键确认;
新建后会弹出【将文件添加到Git】提示框,新手可以不用了解,可以勾选【不再询问】,再点击【取消】。
Python代码文件新建结束。
第三章 基础语法指令
一、print —— 打印指令,代码输入与运行
print(“爸!!”)
全英文输入法输入相应代码,符号也必须再因为状态下输入,否则会出错。
注:引号可以是双引号,也可以是单引号。引号以及引号内的内容为字符串。即使里面写的数字,也会被视为字符串。
打印显示 爸!!
打开PyCharm软件,主界面会有之前新建的项目文件,双击打开项目。如果主界面没有项目文件,可以点击右上角的【打开】按钮寻找。
点击左侧【项目】,打开项目列表;
右击项目文件名新建程序文件;注意不能右击venv文件夹将程序文件新建到此文件夹目录内,venv文件夹是此项目的虚拟环境文件,不可在此增加或者删减文件。代码文件需要与此文件夹分开。
依次点击【新建】——【Python文件】;
输入文件名,后缀添加 .py ,按回车键确认;
注意:文件名要求以英文、数字、下划线组成;不要有空格、表情包等;
程序文件添加完成;
测试运行代码。代码输入完成后,右击代码框,选择【运行】按钮运行代码;
运行窗口,显示程序运行状态。运行窗口的第一行和最后一行是软件自动生成的,第一行为PyCharm在运行代码时自动触发的运行指令,最后一行末尾显示为0,则代表程序无错误,如果是非零的数字,代表程序有错误。中间部分为程序运行的结果输出内容。
如果程序编辑错误,软件会自动用红色下划线提示,运行了错误的程序,运行窗口也会有错误提示内容。最后一行末尾数字也会是非零的数字。
注:如果不知道错误原因,可以复制错误提示的最后一行到百度内,粘贴并搜索,能找到别人也遇到过相似的问题的处理方式和原因。(上图错误内容复制:SyntaxError: invalid character ‘(’(U+FF08))。
二、字符串与字符串连接符
1、字符串连接
字符串之间用“+”号作为连接符。
例如:print(“Hello”+” World”+”!”)
2、单双引号转义
print(“He said “good!””)
此行程序会出错,默认为前面两个引号为一组,后面两个引号为一组,第二个到第三个引号之间的内容会出错。
需要改为以下指令:
print(‘He said “good!”’)
print(“He said ‘good!’”)
如果一句话内有单引号和双引号,例如:
“He said “Let’s go!””
需要在引号前加反斜杠\,表示后面的引号为引号符号,是内容的一部分,不是结束符。
print(“He said \“Let\’s go!\””)
上一句打印出来是:He said “Let’s go!”
3、换行
\n 表示换行
print(“Hello!\nHi!”)
打印出来的内容如下图,Hi!显示在下一行。
4、三引号跨行字符串
三个连在一起单引号或双引号。
""" """ ''' '''
三、变量
变量名称规则:字母、数字、下划线组成;不能有除了下划线以外的符号;不能有空格;不能以数字开头;不能用双引号包括;变量区分大小写;不能使用专用关键字。
变量命名建议:不要使用拼英,使用英文单词组命名,Python3.0版本后支持中文变量,但是不建议使用中文变量,可能存在乱码。
Python变量命名约定俗成使用下划线命名法。
1、字母全部小写。
2、不同单词用下划线分隔。
例如:user_age user_gender
变量赋值操作用单等号,例如 my_love = 123456789
代码是一行一行执行的,故使用变量时,变量必须在此之前定义,否则会出错。
四、数学运算
带双引号的数字是字符串 "6",
带小数点的数字都是浮点数 6.0,
不带小数的数字为整数 6。
加(+) 减(-) 乘(*) 除(/) 乘方(**)
在程序前添加 import math 指令,可以将Python内置的函数库加载到程序内。
使用内置函数可以直接访问,例如 math.sin(1)
内置函数库网址:math --- 数学函数 — Python 3.13.0 文档
五、注释
# 为注释符,仅当前行注释。
快捷键:ctrl+/
如果需要撤销注释,选择注释行,按 ctrl+/ 将撤销注释。
快捷键注释方法适用于一次性注释连续的多行或连续的撤销注释。
三引号注释,""" """,也适用于多行注释。
如果将多行注释前面加上变量名和等号,将代表将此内容赋值给一个变量。
str = """一二三四
五六七八
九十"""
六、数据类型
Python语言在定义变量时,不需要指定变量的数据类型,Python程序会根据变量值,自动确定变量类型。
1、字符串 str
字符串特点是被双引号或单引号包裹,例如:”字符串” ‘字符串’
可以对字符串使用len指令得到字符串长度;
例如: len(“Hello”),返回长度5,
len(“哟!”),返回长度2。
len(“\n”),返回长度1。\n为一个完整的转义符,即 换行。
可以提取字符串中某一个位置的单个字符;
“Hello”[4] 返回为 o
字符串编码从0起始。
2、整数 int、浮点数 float
6 -32 整数 int
6.0 10.07 浮点数 float
3、布尔类型 bool
只有以下两种值:
真 假
Ture False (区分大小写)
4、空值类型 NoneType
只有一种值:None
表示完全没有值
None 不是0,不是空字符串””,也不是False。
当不确定变量数据类型时,可以使用type指令反馈变量类型。
七、input——用户输入指令
执行input指令时,读取用户输入的数据。
八、条件语句
== 比较运算符 等于。
!= 比较运算符 不等于。
条件判断语法结构:
执行语句需要缩进四个空格,如果不缩进,默认为条件语句已经执行结束。
九、嵌套/多条件判断
下图表示多条件嵌套写法,注意缩进数量。
条件判断语句内可以使用连续的判断符号 if 0<= score <= 100:
三目运算符:是 if…else… 双分支结构的缩写形式。
格式: 结果1 if 条件 else 结果2
结果1:条件成立时返回的结果
结果2:条件不成立时返回的结果
例子: second_max = num1 if num1 > num2 else num2
判断num1是否大于num2,如果成立,则返回num1的值赋值给左边的变量,否则返回num2的值给左边的变量。
十、逻辑运算
与(and) 所有条件为True,才会返回True;只要有一个为False,就为False。
或(or) 只要有一个条件为True,就会返回True;所有条件为False,才为False。
非(not) 操作对象为True,则返回Flase;操作对象是Flase,则返回True。
优先级顺序 not ——> and ——> or
也可以使用括号改变运算顺序
not(x>5 and (x<10 or x==12))
十一、列表 []
列表 特点:有序,可重复,可扩展
shopping_list = []
一个空列表用 中括号 [] 表示。
shopping_list = [“键盘”,”鼠标”]
在列表内添加内容的方法
shopping_list.append = [“显示器”]
在列表内删除内容的方法
shopping_list.remove = [“显示器”]
列表内可放不同类型的数据;
列表求长度返回的是列表中元素的数量;
shopping_list = [“键盘”,”鼠标”,”硬盘”]
len(shopping_list),返回为3
也可以通过索引获取列表中某个元素。
shopping_list = [“键盘”,”鼠标”,”硬盘”]
print(shopping_list[0]),返回为 键盘,列表索引也是从0开始。
列表为可变数据类型。
十二、元组 tuple
元组 特点:有序,可重复,不可扩展
不可变但又很像列表的数据结构。
元组内可放多个元素。
列表用方括号;元组用圆括号()。
元组不可变,添加、删除等操作都不能操作
可以把元组作为键使用:
十三、集合 set
集合 特点:无序,不可重复,可扩展
以上程序运行输出内容:
十四、字典 {}
键 : 值
key value
contacts = {}
一个空字典用 花括号 {} 表示。
键必须为不可变数据类型;即字符串、整数、浮点数等,不能为列表。
添加或更新键值对的方法:字典名[“键”] = “值“
判断键是否存在字典里面:“键”in 字典名
删除键与对应的值:del 字典名[“键”]
如果键不存在,指令会报错。
求键值对数量:len(字典名)
返回字典的键、值、键值对的方法:
十五、for循环
等同于
break 终止当前循环,,使程序跳出循环体。
continue 结束当前循环剩余语句,继续下一轮循环
pass 在Python中是一个空语句,什么都不做,占位语句,它的主要目的是为了保持程序结构的完整性。当你在编写代码时,可能只想先搭建起程序的整体逻辑结构,而暂时不去实现某些细节。在这种情况下,你可以使用pass语句来占位,这样就可以避免因为语句块为空而导致的语法错误。pass语句不会执行任何操作,它只是一个空白的语句块。
十六、range整数序列
range 表示整数序列
range(5,10)
第一个数字为起始值,第二个数字为结束值,注:结束值不在序列范围内。
range(5,10,2)
range的第三个参数为步长,不指明的时候默认为1
十七、while循环
以下三段程序效果相同
有明确的循环对象或次数时用for循环。
循环次数未知时用while循环。
十八、格式化字符串
1、format方法
format内的参数起始编号以0开始,即花括号引用的0表示第一个参数,1表示第二个参数。
format还可以根据关键词引用,这种方式就不需要考虑参数在format内的哪个位置,只根据关键词引用。
2、f-字符串
f字符串引用已定义的字符串变量。
format方法调到用字符串可以直接调用数字,不需要额外进行数字转字符串的操作。
还可以使用 冒号+点+数字+f 来指定浮点数在格式化是保留几位小数。
十九、函数
Python内置函数
自定义函数。除了内置函数,还可以自定义函数,格式如下,注意四个而空格缩进。
函数返回值 return
函数运行完成后,没有写返回值,默认返回值为 None。
print、append、len、sum等函数的返回值均为None
自定义函数返回值示例
二十、引入模块
Python含有很多的函数模块,不同模块内存不同功能的函数,可以在程序里面引入使用。
1、import 语句
import 加上模块名 引入模块
需要使用模块的函数或变量的时候格式如下:
模块名.函数名
模块名.变量名
示例:
import statistics
print(statistics.median([19, -5, 36]))
print(statistics.mean([19, -5, 36]))
2、from…import… 语句
from 模块名 import 函数名,变量名 引入模块的某些函数或变量
from后面添加模块名,import后面添加函数名或变量名,需要引入多个的时候用逗号进行分隔。
此方法在使用时不需要再带上模块名。
示例:
from statistics import median, mean
print(median([19, -5, 36]))
print(mean([19, -5, 36]))
3、from…import * 语句
from 模块名 import * 引入模块的所有内容
from后面添加模块名,import后面加*号,将模块里面的所有内容进行引入,在使用时全都不需要在前面添加模块名。
优点:需要使用同一个模块的不同函数或变量可以直接使用,不需要再加模块名。
缺点:如果因引用多个模块,不同模块内可能包含相同名称的函数,运行时可能出现错误。
此方法不建议使用。
示例:
from statistics import *
print(median([19, -5, 36]))
print(mean([19, -5, 36]))
4、其他
在PyCharm软件内查看Python模块函数代码方法,按住ctrl,再点击代码中的函数,即会显示源代码。
除了引入官方的模块以外,还可以引入第三方模块,引入方法与引用官方模块一样,前提是引入之前需要提前安装好第三方的模块。
第三方库搜索网站:PyPI · The Python Package Index
如果安装第三方库,在PyCharm的【终端】窗口输入 pip install 后面加上库的名字。安装完成后即可使用库的函数。
第四章 进阶函数
一、类
1、类的定义 class
2、类的命名
Python常用类的命名方法为Pascal命名法,即首字母大写。
3、类的构造函数
类的构造函数,主要作用是定义实例对象的属性。
必须命名为 __init__ 前后必须有两个下划线。括号内可以放任意数量的参数,但是第一个永远是被占用的,用于表示自身,约定俗称为self,它能把属性绑定在实列的对象上。
从参数中获取值,在创建对象时,在括号内写入要传入的参数,__init__函数将会绑定传入的参数。
4、定义类的方法(函数)
定义类的方法与创建普通函数差不多。
有两点区别:
1、需要创建在class里面,前面需要有缩进,来表示属于该类的方法。
2、和 __init__ 一样,第一个参数被占用,用于表示对象自身,约定俗成为 self 。
5、类的继承
子类可以继承父类的属性和方法。
在子类名称后的括号中写上父类的名称,此时父类的方法就会继承到子类中。
调用函数和方法时,优先看所属的类是否有没有该方法函数,如果过有,则执行该类的方法,如果没有,会往上找父类的同名方法使用。
如果子类程序中有__init__方法,则创建子类实例时优先调用子类的构造函数,导致实例只有子类的__init__中的属性参数,而父类的__init__属性参数不会被调用。
此时在子类中用supper()方法,返回当前类的父类;
在子类的构造函数中写 supper().__init__(),则会调用父类的构造函数,子类将会继承父类的构造函数中的属性。
什么时候可以用继承?
如果说A是B,那么就可以把A写成是B的子类。
二、Python文件路径
不同操作系统文件存储路径,Linux、macOS等操作系统所有文件存储在根目录下,根目录用斜杠(/)表示。
Windows操作系统每个磁盘分区都有根目录,用分区名加反斜杠(\)表示。
定义文件位置的方法有两种,绝对路径和相对路径。
1、绝对路径
从根目录出发的路径。
对于Linux、macOS等系统,绝对路径以斜杠(/)开头,路径中每个目录之间用斜杠进行分隔,最后以目标文件或目标目录结尾。
对于Windows系统,绝对路径以分区名加反斜杠(\)开头,路径中每个目录之间用反斜杠进行分隔,最后以目标文件或目标目录结尾。
2、相对路径
从一个参考位置出发。表示从指定文件位置出发,其他文件处于什么路径。
用相对路径时,用点(.)表示参照物所在的目录,用点点(..)表示更上一层的父目录。如果继续往上走,就用点点(..)跟上斜杠或者反斜杠进行分隔,后面跟上点点(..)表示当前文件所属目录的父目录的父目录。如果是往更下层走,同样以斜杠或反斜杠来分隔路径中的目录。
相对路径都是以点(.)或点点(..)开头。
./(.\)是可以省略的,在同一路径下相互用相对路径找到彼此,可以直接使用文件名。
三、Python文件操作
1、open() 方法,打开文件
open()方法,打开文件,括号内放文件路径,可以是相对路径也可以是绝对路径。
示例:open(“./data.txt”) 相对路径
open(“/usr/demo/data.txt”) 绝对路径
open()方法的第二个参数表示模式,模式是一个字符串,常见的字符串有“r”,表示读取模式;“w”表示写入模式。
示例:open(“/usr/demo/data.txt”,”r”)
注:第二个参数可以不写,不写时默认为读取模式 ”r”。
读取模式下,如果找不到文件,就会报FileNotFoundError的错误,表示文件不存在。
open()方法还有一个可选参数 encoding 表示编码方式。一般文件编码方式为 UTF-8。
示例:f = open(“./data.txt”, ”r”, encoding=”utf-8”)
如果open()方法执行成功,将会返回一个文件对象,后续可以对这个对象进行读取或写入操作。
2、read() 方法,读取文件方法一
运行read()方法会一次性读取文件里面的所有内容,并以字符串的形式返回。一般操作的文件以文本为主。其他类似word文件内有字体颜色、字号区分的文件,很可能读取有误。
运行read()方法后,再次调用时返回的结果为空,因为程序会记录文件读取到哪个位置,第一次运行read()时已经读到结尾,第二次运行时后面已经没有内容。
文件太大时不建议使用read()方法,因为读出来的内容会占用很大的内存。如果不需要一次性读取整个文件,可以在read()传一个数字,表示读多少个字节,下次调用read时会从上次结束位置继续往下读。
3、readline() 方法,读取文件方法二
只读取文件一行内容,下次调用时继续读取下一行,根据换行符来判断什么时候结束本行。并且换行符会被当成读到的内容的一部分。读取到结尾后,继续读取将会返回空字符串,表示后面已经无内容。
一般采用while循环判断,只要返回的不是空字符串就继续读取下一行,否则退出循环。
4、readlines() 方法,读取文件方法三
读取文件内容,并将每行作为列表元素返回。
一般和for循环结合使用。先调用readlines方法把每行读取出来,再逐行循环列表所有内容。
三种读取文件的方法:
5、close() 方法,关闭文件
调用close方法后将会释放系统资源,每次调用文件完成后都应该关闭文件。
with open(“./data.txt”) as f:
print(f.read()) #对文件的操作
如上方式可以不用调用close方法关闭文件,文件操作完成后会自动关闭文件。注意对文件操作的代码需要缩进,缩进的代码块执行完毕后会自动关闭文件。
6、write() 方法,写文件
写文件与读文件类似,都需要先打开文件,并且在操作完成后关闭文件。同样可以使用 with open() as f: 方式。
with open(“./data.txt”,”w”, encoding=”utf-8”) as f:
open的第二个参数传入w,即为写文件模式,写文件模式找不到文件,不会像读文件模式那样报错,而是自动创建传入文件名的那个文件。第三个参数为encoding编码格式。
注:使用w模式打开文件进行写入时,如果文件已存在,将会把原有文件内容全部清空。
如果不想重写文件内容,而是增加文件内容,则open()的第二个参数需要传入附加模式”a”参数。如果文件名不存在,会直接创建文件。
无论是”w”模式,还是”a”模式,都不能读取文件原本的内容,如果在这两个模式下调用read()方法,程序会报错不支持读操作(UnsupporttedOperation)。
7、r+,同时支持读写文件
open()方法的第二个参数传入”r+”参数,就可以同时支持读写文件。
四、Python异常处理
程序报错类型有很多。可以通过try/except语句捕捉异常,
try后加冒号,换行后在缩进的代码块里放入可能产生错误的代码,接下来在except后面跟上需要捕捉的错误名字以及冒号。
以上程序,用户输入的内容可能不是浮点数,将会报错ValueError错误,就可以在except后面放入ValueError去捕捉。再在下一行放入出现错误代码后需要执行的代码。
可以分别捕捉多个错误代码,如果不知道可能出现什么错误,可以写except:即为除了以上列出的错误代码以外的任何错误都执行此代码。
需要注意的是,try/except语句在捕捉错误时,依次从上往下运行,如果第一个except已经捕捉到错误,之后的except将不会执行,与if/elif语句类似,只有第一个符合条件的分支会运行。
else: 表示没有出现任何错误时执行的语句。
finally: 无论是否发生错误,都会执行的语句。
五、Python测试
1、assert 断言
assert后面可以跟上任何布尔表达式,在assert后面跟上我们认为为True的表达式,如果assert后面的表达式最终求出来为True,则正常结束,继续运行后面的代码。如果求出来的结果为False,则会产生“AssertionError”断言错误。一旦出现断言错误,程序将会终止。
一般会使用专门做测试的库,能一次性跑多个测试用例,并且能直观展示哪些测试通过。
2、unittest 单元测试
unittest对软件中最小可测试单元进行验证。比如验证某函数的某个方面表现是否符合预期。unittest库时Python自带的,不需要额外安装。
因unittest是一个库,需要用import语句引用到测试程序内。
一般把测试代码放到独立文件内。而不是和要测试的功能放到一起。这样更清晰地划分实现代码和测试代码。测试代码中还需要将需要测试的函数或类引入进来,如果测试文件和被测试文件位于同一文件夹下,引入语法是:
from 文件名 import 函数名
from 文件名 import 类名
3、测试代码
引入测试模块 unittest单元测试模块,并且引入需要测试的函数。创建一个测试的类,作为unittest.TestCase的子类,继承unittest.TestCase的各种测试功能。在此类下面定义各种需要测试的用例,每个测试用例都是类的一个方法。
测试方法命名必须以 test_ 开头。因为 unittest 库只把 test_ 开头的方法当作测试用例,
以上测试可以使用 unittest 库里面 unittest.TestCase 类的assertEqual 方法,自编辑的类已经继承测试unittest.TestCase 类,可直接使用self调用父类方法,传入的第一个参数和第二个参数如果相等,则测试通过,如果不相等,则测试不通过,程序也不会报错退出。
测试用例编辑完成后,需要在编辑器的【终端】窗口中输入 python -m unittest 运行unittest库,这个库就会自动搜索所有继承了unittest库里TestCase类的子类,运行所有以 test_ 开头的方法,然后展示测试结果。
运行结束后,会提示一共运行了几个测试用例,并且展示测试结果, 一个·表示一个测试一个测试通过,F表示一个测试不通过。
如果有测试不通过,unittest会详细输出哪个文件下面的哪个方法造成了测试失败,以及为什么失败。
4、高效测试代码
unittest.TestCase类的常见测试方法。
假如需要测试一个类,为了调用各种类方法,需要创建示例对象,由于不同测试用例之间是独立的,测试不同方法的时候,需要不停的创建新的对象。
为了减少重复代码,可以使用TestCase类里的setUp方法,在运行测试代码时,也就是 tset_ 开头的方法前,setUp方法都会先被运行一次,这样只需要在setUp方法里面把测试对象创建好,作为当前测试类的一个属性,然后在各个方法里面获取已经创建好的对象去写测试语句。
六、Python高阶和匿名函数
1、高阶函数
一个函数里面些多个运行逻辑,每次增加逻辑时需要在这个函数继续增加程序,此写法不优雅直观。
为了优雅直观的表示函数,可以将函数的各种计算方式独立成单独的函数。运行计算方式时直接调用传入的函数将计算结果显示出来。
这种将函数作为参数的函数叫做高阶函数。
作为参数的函数是直接用函数名进行传入,表示函数其本身,后面不能带括号和参数,入过带括号,即表示调用此函数,从而传入的是函数的执行结果。
高阶函数还可以同时调用多个函数。
2、匿名函数
匿名函数不需要写名字,即用即仍,可以把匿名函数当作没有名字且占用行数更少的函数。以lambda作为关键字。
可以直接在高阶函数的括号内写上关键字 lambda ,再跟上 变量名,后面再跟上冒号 : ,冒号后面直接写上需要返回的结果,无需写return.
如果需要给匿名函数增加参数,直接用逗号分隔即可。
以上匿名函数写成普通函数,如下图所示:
除了作为高阶函数的参数,匿名函数还可以定义好后直接被调用。调用方式和普通函数一样,都是括号,然后括号里面传入参数,唯一的区别是前面的匿名函数也是要被括住,表示这是一个整体。
匿名函数也有局限性,冒号后没法有多个语句或表达式,只适用于比较简单的场景,对于多步骤的复杂逻辑或者设计循环递归等,它可能不灵活,没法用它写出来;即使写出来,可读性会很差。
第五章 其他
一、相关
Python标准库:Python 标准库 — Python 3.13.0 文档
看完这套Python入门教程后:
想继续巩固基础,推荐书籍《Python编程从入门到实践(第3版)》
👉Python 标准库 — Python 3.13.0 文档
👉 京东网上商城
👉图灵社区
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: