版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章Python开发环境搭建与使用董付国微信公众号:Python小屋本章学习目标了解Python语言的应用领域了解Python语言的特点熟练使用IDLE开发环境熟练安装Python扩展库并熟悉安装过程中的常见问题和解决方法了解标准库对象和扩展库对象的导入和使用方法了解Python代码编写规范1.1Python语言特点与应用领域常见应用领域:计算机安全、网络安全、软件漏洞挖掘、软件逆向工程、软件测试与分析、电子取证、密码学数据采集、数据分析与处理、数据可视化机器学习、深度学习、自然语言处理、推荐系统构建统计分析、数学建模、科学计算、符号计算计算机图形学、数字图像处理、音乐编程、语音采集与识别、视频采集与处理、动画设计与制作、游戏设计与策划套接字编程、网站开发、网络爬虫、网络运维、系统运维树莓派、无人机、移动终端应用开发、电子电路设计辅助教育、辅助设计、办公自动化1.1Python语言特点与应用领域Python是一门跨平台、开源、免费的解释型高级动态程序设计语言,是一种通用程序设计语言。除了直接解释执行源码之外,Python还可以把源代码伪编译为字节码来优化程序、提高加载速度并对源代码进行一定程度的保密,也支持使用py2exe、pyinstaller、cx_Freeze、py2app、Nuitka或其他类似工具将Python程序及其所有依赖库打包为特定平台上的可执行文件,从而可以脱离Python解释器环境和相关依赖库在其他同类平台上独立运行,同时也可以更好地保护源码和知识产权。1.1Python语言特点与应用领域Python语言优势与特点:以快速解决问题为主要出发点,不涉及过多计算机底层知识,需要记忆的语言细节少,可以快速入门。支持命令式编程、函数式编程,支持面向对象程序设计,其中函数式编程模式可以让代码更优雅,也能够更好地利用CPU等硬件资源。语法简洁清晰,代码布局优雅,可读性和可维护性强。在编写Python程序时,强制要求的缩进使得代码排版非常漂亮并且方便人类阅读,建议适当添加的空行和空格使得代码不至于过度密集,大幅度提高了代码可读性和可维护性。内置数据类型、内置模块和标准库提供了大量功能强大的操作,易学易用。很多在其他编程语言中需要十几行甚至几十行代码才能实现的功能在Python中被封装为一个函数,直接调用即可,降低了非计算机专业人士学习和使用Python的门槛。拥有大量的几乎支持所有领域应用开发的成熟扩展库和狂热支持者。1.2Python安装与IDLE简单使用1.2Python安装与IDLE简单使用1.3在PowerShell或命令提示符环境运行Python程序#内置函数input()用于接收用户的键盘输入name=input('输入你的名字:')#字符串前面加字母f表示对其中大括号里的内容进行替换和格式化,见6.1.3节print(f'{name}你好,欢迎加入Python的奇妙世界!')1.4.1包、库、模块的概念模块指一个包含若干函数定义、类定义或常量的Python源程序文件,库或包指包含若干模块并且其中一个文件名为__init__.py的文件夹。对于包含完整功能代码的单个模块,叫作库也可以,例如标准库re和re模块这两种说法都可以。但一般不把库叫作模块,例如tkinter库包含若干模块文件,此时一般说标准库tkinter而不说tkinter模块。在Python中,有内置模块、标准库和扩展库之分。内置模块和标准库是Python官方的标准安装包自带的,内置模块没有对应的文件,可以认为是封装在Python解释器主程序中的;标准库有对应的Python程序文件,这些文件在Python安装路径中的Lib文件夹中。1.4.1包、库、模块的概念1.4.1包、库、模块的概念常用标准库:math(数学模块)、random(随机模块)、datetime(日期时间模块)、time(时间操作有关的模块)、collections(包含更多扩展版本序列的模块)、operator(常用运算符模块)、functools(与函数以及函数式编程有关的模块)、itertools(与迭代有关的模块)、urllib(与网页内容读取以及网页地址解析有关的库)、string(字符串模块)、re(正则表达式模块)、os(系统编程模块)、os.path(与文件、文件夹有关的模块)、shutil(高级文件操作)、zlib(数据压缩模块)、hashlib(安全哈希与报文摘要模块)、socket(套接字编程模块)、tkinter(GUI编程库)、sqlite3(操作SQLite数据库的模块)、csv(读写CSV文件的模块)、json(读写JSON文件的模块)、pickle(数据序列化与反序列化的模块)、statistics(统计模块)、threading(多线程编程模块)、multiprocessing(多进程编程模块)、wave(读写wav文件)1.4.1包、库、模块的概念常用扩展库:jieba(用于中文分词)、moviepy(用于编辑视频文件)、xlrd(用于读取Excel2003及之前版本文件)、xlwt(用于写入Excel2003及之前版本文件)、openpyxl(用于读写Excel2007及更高版本文件)、python-docx(用于读写Word2007及更新版本文件)、python-pptx(用于读写PowerPoint2007及更新版本文件)、pymupdf(用于操作PDF文件)、pymssql(用于操作MicrosoftSQLServer数据库)、pypinyin(用于处理中文拼音)、Pillow(用于数字图像处理)、PyOpenGL(用于计算机图形学编程)、NumPy(用于数组计算与矩阵计算)、Scipy(用于科学计算)、Pandas(用于数据分析与处理)、Matplotlib(用于数据可视化或科学计算可视化)、requests(用于实现网络爬虫功能)、beautifulsoup4(用于解析网页源代码)、Scrapy(爬虫框架)、Selenium(自动化测试)、sklearn(用于机器学习)、PyTorch、tensorflow(用于深度学习)、Flask、Django(用于网站开发)、PyOpenCV(用于计算机视觉)。1.4.2安装扩展库扩展库安装成功之后相应的文件会存放于Python安装路径的Lib\site-packages文件夹中。1.4.2安装扩展库常用pip子命令pip命令示例说明pipfreeze[>requirements.txt]列出已安装模块及其版本号,可以把这些信息直接写入文本文件requirements.txtpipinstallSomePackage[==version]在线安装SomePackage模块,可以指定扩展库版本,如果不指定则默认安装最新版本pipinstallSomePackage.whl通过whl文件离线安装扩展库pipinstall--upgradeSomePackage升级SomePackage模块到最新版本pipinstall-rrequirements.txt根据文件requirements.txt中的扩展库名称和版本信息进行批量安装pipuninstallSomePackage卸载SomePackage模块1.4.2安装扩展库(1)在线安装失败在线安装失败最大的可能有三个:1)网络不好导致下载失败,2)需要本地安装有正确版本的VC++编译环境,3)扩展库暂时还不支持自己使用的Python版本。对于第一种错误,可以多尝试几次、指定国内源或下载whl文件离线安装。对于第二种错误,可以在本地安装合适版本的VC++编译器或者下载whl文件离线安装。对于第三种错误,可以尝试找一下有没有第三方编译好的whl文件可以下载然后离线安装。在Windows平台上,可以从/~gohlke/pythonlibs/下载第三方编译好的.whl格式扩展库安装文件。1.4.2安装扩展库然后在命令提示符或PowerShell环境中使用pip命令进行离线安装,指定文件的完整路径和扩展名,例如:pipinstallpandas-1.4.3-cp310-cp310-win_amd64.whl在PowerShell环境中,如果要执行当前目录下的程序,需要在前面加一个圆点和一个斜线,例如在Python安装路径中Scripts文件夹中执行上面的命令需要改成下面的格式:./pipinstallpandas-1.4.3-cp310-cp310-win_amd64.whl如果由于网速问题导致在线安装速度过慢的话,pip命令支持指定国内的站点来提高速度,下面的命令用来从阿里云服务器下载安装扩展库jieba,其他服务器地址可以自行查阅。pipinstalljieba-i/pypi/simple--trusted-host1.4.2安装扩展库如果固定使用阿里云服务器镜像,可以在当前登录用户的AppData\Roaming文件夹中创建文件夹pip,在pip文件夹中创建文件pip.ini,输入下面的内容,以后再执行pip命令安装和升级扩展库时就不用每次都指定服务器地址了。[global]index-url=/pypi/simple[install]trusted-host=1.4.2安装扩展库如果遇到类似于“拒绝访问”的出错提示,可以使用管理员权限启动命令提示符,或者在执行pip命令时在最后增加选项“--user”。如果需要指定安装位置,可以参考下面的命令进行修改。pipinstall--target=c:\python38\lib\site-packagesgif1.4.2安装扩展库(2)安装路径带来的问题如果计算机上安装了多个版本的Python开发环境,在一个版本下安装的扩展库无法在另一个版本中使用,同一个扩展库需要在不同版本的Python环境中分别进行安装。为了避免因为路径问题带来困扰,强烈建议在命令提示符或PowerShell环境切换至相应版本Python安装目录的scripts文件夹中,然后执行pip命令,如果要离线安装扩展库的话,最好也把.whl文件下载到相应版本的scripts文件夹中。简单地说,想在哪个版本的Python中使用扩展库,就到哪个版本的Python安装路径中的Scripts子文件夹中安装扩展库,这样可以最大程度地减少错误。1.4.2安装扩展库(3)扩展库版本带来的问题编写Python程序时,尤其是使用了扩展库的程序,还可能会遇到的一种情况是,升级扩展库以后原来的程序无法运行了,提示某些属性或方法不存在。这是因为新版本扩展库不再支持原来的用法,这时需要查一下这个扩展库官方网站的版本更新历史,找到最新的用法然后修改自己的代码。如果确实需要使用旧版本的话,可以执行pip命令时明确指定扩展库版本号,例如,pipinstallmoviepy==1.0.31.4.2安装扩展库(4)快速搭建同样的开发环境在测试使用了扩展库的Python程序时,应确保测试环境和开发环境安装的扩展库版本完全一致,否则无法给出准确可靠的测试结果。一般来说,大型程序会用到很多扩展库,如果在测试环境中逐个安装的话比较花费时间,这时可以在开发环境中使用下面的命令得到所有扩展库名称和版本信息,pipfreeze>requirements.txt然后把得到的文件requirements.txt复制到测试环境中,执行下面的命令批量安装扩展库,pipinstall-rrequirements.txt1.5标准库、扩展库对象的导入与使用Python所有内置对象不需要做任何的导入操作就可以直接使用,内置模块对象和标准库对象必须先导入才能使用,扩展库则需要正确安装之后才能导入和使用其中的对象。在编写代码时,一般建议先导入内置模块和标准库对象再导入扩展库对象,最后导入自己编写的自定义模块。建议每个import语句只导入一个模块或一个模块中的对象。1.5.1import模块名[as别名]importreimportrandomimportos.pathaspath#查找字符串中所有数字子串print(re.findall('\d+','Python123456小屋654'))#随机选择20个字符0或1并连接为长字符串print(''.join(random.choices('01',k=20)))#测试指定的路径是否为文件print(path.isfile(r'E:\python310\python.exe'))运行结果为:['123456','654']11010010111110101111True1.5.2from模块名/包名import对象名/模块名[as别名]fromos.pathimportjoinfromrandomimportsamplefromnumpyimportarrayfromPILimportImageGrab#在区间[0,10)中随机选择6个不重复的数字,返回列表print(sample(range(10),6))#连接文件夹与文件路径print(join(r'C:\python310','python.exe'))#把Python列表转换为Numpy数组print(array([1,2,3,4]))#屏幕截图,然后输出图像宽度和高度print(ImageGrab.grab().size)运行结果为:[7,4,1,0,6,2]C:\python310\python.exe[1234](1920,1080)1.5.3from模块名import*fromitertoolsimport*#从字符串'01234'中任选3个字符的所有组合,不允许重复#list()用来把函数combinations()的返回值变成列表,方便查看,下同print(list(combinations('01234',3)))#从字符串'01234'中任选3个字符的所有组合,允许重复print(list(combinations_with_replacement('01234',3)))#从字符串'1234'中任选3个字符的所有排列print(list(permutations('1234',3)))#把多个列表首尾相接print(list(chain([1,2,3],[4,5,6],[7,8,9])))1.5.3from模块名import*data=[1,2,3,4,5,6]values=[0,1,1,0,0,1]#把等长列表data和values左对齐#返回data中与values中的1对应的位置上的元素print(list(compress(data,values)))#返回列表中作为参数传递给函数callable()后得到False的那些元素print(list(filterfalse(callable,[int,3,str,sum,'5'])))#返回'12'和'45'的笛卡尔积print(list(product('12','45')))#返回3个字符串'12'的笛卡尔积print(list(product('12',repeat=3)))#把'123'和'abcdef'左对齐,对应位置上的字符组合到一起,短的在后面补字符0#相当于把'123000'和'abcdef'左对齐,对应位置上的字符组合到一起print(list(zip_longest('123','abcdef',fillvalue='0')))1.5.3from模块名import*#创建cycle对象,根据给定的数据创建一个无限循环的圈c=cycle('Python小屋')#获取并输出cycle对象中的前10个元素for_inrange(10):print(next(c))#查找第一个数字为17且公差为6的等差数列中第一个大于50的数字foriincount(17,6):ifi>50:print(i)break1.6Python代码编写规范(1)缩进在选择结构、循环结构、异常处理结构、with语句和函数定义、类定义等结构中,对应的函数体或语句块都必须有相应的缩进。当某一行代码与上一行代码不在同样的缩进层次上并且与之前某行代码的缩进层次相同时,表示上一个代码块结束。Python对代码缩进是硬性要求,严格使用缩进来体现代码的逻辑从属关系,错误的缩进将会导致代码无法运行(语法错误)或者可以运行但是得到错误结果(逻辑错误)。一般以4个空格为一个缩进单位,并且相同级别的代码块应具有相同的缩进量。在编写程序时要注意,代码缩进时要么使用空格,要么使用Tab键,不能二者混合使用。1.6Python代码编写规范(2)空格与空行作为一般建议,最好在每个类和函数的定义或一段完整的功能代码之后增加一个空行,在运算符两侧各增加一个空格,逗号后面增加一个空格,让代码适当松散一点,不要过于密集。在实际编写代码时,这个规范需要灵活运用。有些地方增加空行和空格会提高可读性,代码更加利于阅读。但是如果生硬地在所有运算符两侧都增加空格,代码布局过于松散了反而适得其反,应该张弛有度。如果同一个表达式中有明显不同优先级的运算符,高优先级运算符两侧可以不加空格;另外,在下标运算符、成员访问运算符以及函数定义和调用的圆括号两侧都不加空格。1.6Python代码编写规范(3)标识符命名变量名、常量名、函数名和类名、数据成员名、成员方法名统称为标识符,其中变量用来表示初始结果、中间结果和最终结果的值及其支持的操作,函数用来表示一段封装了某种功能的代码,类是具有相似特征和共同行为的对象的抽象。在为标识符起名字时,至少应该做到“见名知义”,并优先考虑使用英文单词或单词的组合作为标识符名字。1.6Python代码编写规范如果使用单词组合的话有两种常用形式,一种是使用单下画线连接单词(例如str_name),一种是标识符名字首字母小写而后面几个单词的首字母大写(例如strName),变量名和函数名可以使用任意一种形式,类名一般使用第二种形式并且首字母大写。例如,使用age表示年龄、number表示数量、radius表示圆或球的半径、price表示价格、area表示面积、volume表示体积、row表示行、column表示列、length表示长度、width表示宽度、line表示直线、curve表示曲线,getArea或get_area表示用来计算面积的函数名,setRadius或set_radius表示修改半径的函数,这也是保证与提高代码可读性和可维护性的基本要求。除非是用来临时演示或测试个别知识点的代码片段,否则不建议使用x、y、z或者a1、a2、a3这样的变量名。1.6Python代码编写规范除“见名知义”这个基本要求之外,在Python中定义标识符时,还应该遵守下面的规范。必须以英文字母、汉字或下划线开头,中间位置可以包含汉字、英文字母、数字和下画线。不能包含空格或任何中英文标点符号。不能使用关键字,例如import、from、if、else、for、while、break、continue、and、or、not、lambda、def、yield、return、class、try、except、finally、raise、with等都是不能用作标识符名称的。可以导入模块keyword之后通过keyword.kwlist查看所有关键字。对英文字母的大小写敏感,例如age和Age是不同的标识符名称。不建议使用系统内置的模块名、类型名或函数名以及已导入的模块名及其成员名作变量名或者自定义函数名、类名,例如type、max、min、len、list这样的变量名都是不建议使用的,也不建议使用math、random、datetime、re或其他内置模块和标准库的名字。1.6Python代码编写规范(4)续行为提高程序的可读性,不要写过长的语句,应尽量保证一行代码不超过屏幕宽度。如果语句确实太长超过屏幕宽度,最好拆分成多行并在前面若干行的行尾使用续行符“\”表示下一行代码仍属于本条语句,或者使用圆括号把多行代码括起来表示是一条语句,但不管哪种方式都不能在标识符、数字和字符串中间位置换行。使用反斜线续行符时要注意,反斜线后面不能再有代码有效字符,可以有注释。另外,在包含若干元素的列表、元组、字典、集合中可以在任意元素后面逗号位置进行换行。1.6Python代码编写规范expression1=1+2+3\#使用反斜线作为续行符+4+5expression2=(1+2+3#把多行表达式放在圆括号中表示是一条语句+4+5)(clips_array([[video]*3,[video]*3],bg_color=(0.6,)*3).write_videofile('6个视频同时播放.avi',co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专用烧烤制品买卖协议(2024版)版B版
- 专属2024年度玉米购入协议格式版A版
- 2025年度产业园区厂房租赁合同规范文本8篇
- 2025年度高科技产业园区物业智能化改造服务协议4篇
- 专业维修与装饰工程2024协议格式版B版
- 2025年度企业搬迁拆迁补偿承包合同范本4篇
- 个人间借贷协议规范文本2024年款版A版
- 2025年度影视基地场地租赁及拍摄服务合同4篇
- 2025年度教育机构场地租赁与教育培训合同2篇
- 二零二四年LED产品OEM生产与技术支持合同
- 冬春季呼吸道传染病防控
- 中介费合同范本(2025年)
- 《kdigo专家共识:补体系统在肾脏疾病的作用》解读
- 生产调度员岗位面试题及答案(经典版)
- 【物 理】2024-2025学年八年级上册物理寒假作业人教版
- 交通运输安全生产管理规范
- 2025春夏运动户外行业趋势白皮书
- 电力行业 电力施工组织设计(施工方案)
- 《法制宣传之盗窃罪》课件
- 通信工程单位劳动合同
- 查对制度 课件
评论
0/150
提交评论