描述
开 本: 大16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787522119137
☆Python编程入门宝典,开启你的Python编程之旅。
☆由浅入深,详解Python基础语法知识,面向对象等高级用法。
☆结合实例,带你探索并发编程、网络编程、数据库编程、爬虫等实用功能。
☆结构完整,内容丰富,语言通俗易懂,读来轻松有趣。
☆版块多样,有助于培养编程思想,拓展编程知识。
☆实例众多,注释详尽,便于理解和掌握Python。
本书是一本关于Python的编程入门书。全书共分为五大部分:学习准备、基础知识、高级知识、编程进阶和应用开发。全书在系统阐述与计算机原理相关的一些知识和Python的开发环境的基础上,重点讲解Python语法相关知识,包括变量、数据类型、逻辑语句、函数、算法等;解析Python实用高级用法,如面向对象、继承与多态、容器化、上下文管理等。同时,本书还结合实例分析了利用Python如何实现并发编程、数据库编程、网络编程、GUI编程,以及Python在Web后端开发、爬虫开发、大数据开发与人工智能开发中的应用。
本书结构完整,内容丰富,语言通俗易懂,实例详尽,初学者可以零基础入门,程序开发人员可以学习提高,提升编程思维。相信本书一定能够帮助不同层次的读者掌握Python编程,提升编程能力。
第1篇 学习准备
第1章 计算机原理
1.1 计算机构成
1.2 操作系统
1.3 编程语言
1.4 进制
1.5 原码、补码与反码
第2章 初识Python语言
2.1 Python语言的前世今生
2.2 Python解释器
2.3 搭建Python语言的开发环境
2.4 Python程序
第2篇 基础知识
第3章 变量与转义字符
3.1 变量
3.2 格式化输出
3.3 转义字符
第4章 数据类型
4.1 数值
4.2 布尔型bool
4.3 字符串str
4.4 列表list
4.5 元组tuple
4.6 集合set
4.7 字典dict
4.8 变量验证type
4.9 数据类型的转换
4.10 控制台输入
第5章 运算符
5.1 算术运算符
5.2 赋值运算符
5.3 比较运算符
5.4 逻辑运算符
5.5 位运算符
第6章 逻辑语句
6.1 条件结构逻辑语句
6.2 随机数模块random
6.3 循环结构逻辑语句
第7章 函数
7.1 普通函数
7.2 变量作用域
7.3 匿名函数
7.4 生成器函数
7.5 装饰器
第8章 编程常用算法
8.1 树
8.2 递归
8.3 排序
第3篇 高级知识
第9章 面向对象编程
9.1 面向对象思想
9.2 类和对象
9.3 调用对象self
9.4 属性
9.5 方法
第10章 继承与多态
10.1 单继承
10.2 多继承
10.3 重写与调用
10.4 多态
第11章 面向对象高级编程
11.1 属性查看dir
11.2 可视化与hash
11.3 运算符重载
11.4 容器化
11.5 反射
11.6 上下文管理
第12章 异常与调试
12.1 异常处理
12.2 try…exept…else语句
12.3 try…except…else…finally语句
12.4 程序调试
第13章 模块与包
13.1 模块化
13.2 Python程序打包
第14章 文件I/O
14.1 打开文件
14.2 关闭文件
14.3 文件读写
14.4 目录操作
第15章 内置函数
15.1 函数式编程
15.2 内置普通函数
15.3 内置高阶函数
第16章 字符串操作
16.1 字符串查找操作
16.2 字符串修改操作
16.3 字符串删除操作.
第17章 日期和时间
17.1 日期和时间处理模块datetime
17.2 datetime模块中的datetime类
第4篇 编程进阶
第18章 并发编程
18.1 多线程的相关概念
18.2 多线程开发
18.3 异步开发
第19章 数据库编程
19.1 数据库介绍
19.2 Python数据库编程
19.3 Python数据库编程——Oracle
19.4 Python数据库编程——MySQL
第20章 网络编程
20.1 网络知识
20.2 socket模块
20.3 TCP编程
20.4 UDP编程
20.5 I/O多路复用
第21章 GUI编程
21.2 Python GUI库
21.3 创建应用程序
21.4 常用控件
21.5 布局
21.6 事件处理
第5篇 应用开发
第22章 Python Web后端开发
22.1 初识Web开发
22.2 Python Web后端开发主流框架
22.3 基于Django企业级框架的Web后端开发
22.4 基于Flask微型框架的Web后端开发
第23章 Python爬虫开发
23.1 爬虫概述
23.2 爬虫的原理和基本步骤
23.3 urllib模块
23.4 Beautiful Soup
第24章 Python大数据开发与人工智能开发
24.1 Python与大数据开发
24.2 Python与人工智能开发
参考文献
Python语言是一种高效的、面向对象的解释型高级编程语言,它的应用十分广泛,可应用于Web开发、网络编程、大数据开发以及人工智能等众多领域。近年来,随着大数据、人工智能成为数字科技的研究热点,Python语言异军突起,越来越受到重视。目前,计算机行业对Python人才的需求也越来越多,学好Python不仅可以高效处理日常工作,也能跟随潮流,掌握未来核心技术。
本书从如何安装Python、如何编写一个程序开始介绍,系统阐释Python语言中的变量、数据类型、逻辑语句、函数、算法等基础知识,然后讲解面向对象等高级特性,最后结合示例讲解并发编程、网络编程、数据库编程、爬虫等实用功能。书中讲解力求详尽,即使读者是初学者,也能按照本书的指导从编写第一个程序开始,到能独立完成应用开发,轻松掌握Python的编程技能。
本书提供了大量的示例内容,增强了学习的趣味性。本书提供的示例贴近生活,便于读者理解和掌握。例如,模拟生活中的计算器和线上购物涉及的商品排序功能,模拟学生成绩管理和商店会员管理功能,解决数学中的向量运算和斐波那契数列问题,等等。同时,示例中提供了可运行的代码和运行结果,读者可根据示例边学边练,在练习中掌握和巩固相关知识点,快速提高编程能力。
书中特别设有“编程宝典”“拨开迷雾”和“邀你来挑战”版块。“编程宝典”版块总结编程技巧,讲解重点和难点,帮助读者梳理知识;“拨开迷雾”版块帮助读者解开困惑,规避易错点和编程陷阱;“邀你来挑战”版块提供相关练习,帮助读者复习巩固知识点,检验学习成果,熟练掌握所学内容。
全书内容丰富、由浅入深,可读性强、启发性强。针对重点、难点配有图文解析,便于读者更好地理解和掌握知识点。本书既适用于初级中级程序开发人员、转岗专业人员,也适用于从未接触过编程的初学者。希望本书可以助力你掌握Python,成为互联网新时代的弄潮儿。
本书在编撰过程中,参考了不少学者的观点与相关资料,在此,对这些学者表示真诚的感谢!同时,欢迎读者提出宝贵意见和建议,以便不断完善本书,再次表示感谢!
第4篇 编程进阶
第18章 并发编程
人类有时可以同时处理两件事情,比如,一边吃饭一边看电视,吃饭和看电视这两件事情是并行处理的。而计算机处理问题的方式与人类不同,同一个CPU处理问题是线性的,一次只能处理一个命令。那么,计算机一边播放音乐一边处理文档是如何实现的呢?这就要依靠并发编程了。
使用并发编程可以充分利用计算机的时间碎片,为每个任务分配一小段时间,多个任务交替执行,由于计算机执行速度很快,只要分配的时间片足够短,多个任务就好像在同时进行一样。
18.1 多线程的相关概念
18.1.1 进程与线程
进程是计算机程序关于某数据集上的一次运行活动,是操作系统资源分配和调度的基本单位。
在操作系统中,每执行一个应用程序就会创建一个新的进程。每一个进程都有自己的地址空间、内存和数据,操作系统负责管理进程并为进程分配时间等资源。由于每个进程都包含独立的数据,所以不同进程之间不能直接共享数据,只能使用进程间通信。
一个进程中至少有一个线程来执行程序,如果一个进程想要同时处理多个任务,就需要多个线程并发执行,其中每个任务都对应一个线程。例如,在使用QQ时,可以同时开启多个会话。
进程与线程的关系如图18-1所示。
18.1.2 并行与并发
并行是指多个任务同时执行,在操作系统中是指多个任务无论是从宏观上还是微观上都是同时执行。
并发是指在一段时间内,多个任务从宏观上看起来是同时执行,但是实际从微观来看还是顺序执行。
使用计算机时,用户可以同时处理多个任务,如:一边播放音乐,一边打开浏览器浏览网页,还可以打开记事本记录今天要处理的事情,这些任务对应的就是进程,这些进程在用户看来是同时在处理,但是在计算机的微观层面上是否也是同时在处理呢?
现在的计算机普遍都是多核CPU,如果计算机在分配资源时,将这3个任务分配给3个CPU去执行,那么这3个进程的运行状态就是并行。如果这3个任务分配给了同一个CPU,CPU为每个进程分配一小段时间片,使得这3个进程可以交替执行,那这3个进程的运行状态就是并发,如图18-2所示。
并行和并发的概念也同样适用于线程,不过在Python中,同一个进程中的线程只会占用一个内核CPU,如果想在Python中实现并行,只能创建多个进程。本书在此之前的示例执行的都是单一任务,如果要同时执行多种任务怎么办呢?在Python中,有以下三种方法。
第一种方法,创建多个进程,每个进程执行一种任务。
第二种方法,创建一个进程,一个进程中创建多个线程,每个线程执行一个任务。
第三种方法,创建多个进程,每个进程中创建多个线程,进程和线程同时执行任务(这种方法过于复杂,实际开发中很少采用)。
执行多种任务的方法概括起来如图18-3所示。
创建进程需要消耗更多的资源,而且一般需要执行多任务时,各个任务之间可能有先后顺序,也可能需要进行数据传输和交换,而进程之间数据无法共享,只能使用进程间通信,因此一般我们选择使用多线程的方式来执行多任务。
使用多线程可以完成并发,实现宏观上的“多任务”模式,多个线程是属于同一个进程的,这里的“多任务”是指同一个进程内的多件任务。例如,运行QQ时,我们在会话窗口输入文字的同时也能接收到对方传来的消息,这就需要两个线程来分别完成“接收消息”和“输入文字”的任务。
编程宝典
使用多线程的优点
使用多线程有以下几个优点。
(1)使用多线程编程,可以将占据时间长的任务放到后台去处理,例如,使用word打印文件时,将打印程序放到后台去处理,不影响用户继续编辑文件。
(2)使用多线程编程,有时可以充分利用计算机的时间片段,提高程序的整体运行速度。例如,执行一些用户输入、网络收发数据等需要等待的任务时,将这些任务放到线程中去处理能提高程序的运行效率。
(3)使用多线程编程,可以提高用户的使用体验,增强程序的交互性。例如,在视频播放时,用户可以随时点击暂停按钮,停止播放。
18.1.3 线程的生命周期
一个线程有五种状态,分别为新建、就绪、运行、阻塞和死亡。
(1)新建状态:新创建的线程对象处于新建状态。
(2)就绪状态:当调用线程对象的start()方法后,线程处于就绪状态,等待调度。
(3)运行状态:处于就绪状态的线程获得CPU等资源后就可以转为运行状态,处于运行状态的线程可以执行本线程的代码。
(4)阻塞状态:阻塞状态根据产生阻塞的原因又可以分为三种:等待阻塞、同步阻塞和其他阻塞。
等待阻塞:一个A线程可以通过调用B线程的join()方法使A线程本身进入阻塞状态,直到B线程执行完毕后,A线程才从阻塞状态转变为就绪状态。
同步阻塞:同步阻塞是指两个线程同时想访问共享数据时,一旦其中一个线程,比如A线程获得访问权限,那么B线程就进入阻塞状态,直到A线程访问完毕后,B线程才从阻塞状态转变为就绪状态。
其他阻塞:在线程运行过程中,当调用sleep()函数或等待接收用户输入的数据时,线程进入阻塞状态,直到sleep()函数执行完毕或用户输入完毕,线程才从阻塞状态转变为就绪状态。
处于运行状态的线程遇到以上几种阻塞情况时,进入阻塞状态。
(5)死亡状态:当一个线程的程序执行完毕,或者发生错误或异常,线程就进入死亡状态。线程的五种状态之间的转换关系如图18-4所示。
18.1.4 线程安全
实际开发过程中,很多时候都需要用到多线程,多个线程同时执行时,可能会同时访问共享数据。例如,某网络商店在双十一期间搞秒杀活动,商品数量一共有n件,客户下单购买时,程序后台首先判断当前库存数量n是否大于0,如果大于0,客户就可以下单付款,相应地库存数量变为n-1。当有多个顾客同时购买时,就会有多个线程同时访问这段代码,如果A线程和B线程同时获得了当前的商品数量n,并且判断出n大于0,然后各自执行下单操作,最后可能会导致A和B都下单完毕时,库存数量本应变为n-2,却因为线程交替执行的原因导致库存数量变为n-1,导致数据不同步,产生逻辑错误,如图18-5所示。
所以,在进行多线程开发时,当多个线程都需要访问共享数据时需要着重考虑线程安全问题。
那么,线程安全的问题如何解决呢?
目前,解决线程访问共享数据的安全问题,通用做法是给共享数据上一道锁。共享数据就好像一个密室,一开始处于未锁定状态,当线程访问共享数据时会将密室锁定,其他线程就无法再访问,等该线程访问完毕,将锁打开,其他线程才能继续访问,如图18-6所示。
18.2 多线程开发
Python中提供了几个实现多线程开发的模块,例如:_thread和threading,等等。_thread和threading模块提供了创建和管理线程的方法,_thread是低级模块,threading模块提供了对_thread模块的封装,是高级模块。_thread模块中,当主线程结束时,子线程无论是否已完成都将被强制结束,而threading模块能确保重要子线程完成后进程才结束。所以,在实际开发时一般选用threading模块。
18.2.1 多线程
在Python中,创建多线程有以下两种方式:使用_thread.start_new_thread()函数创建线程;使用threading模块提供的Thread类创建线程。
- 使用_thread模块提供的start_new_thread()函数创建线程
_thread模块提供了start_new_thread()方法来创建线程。其语法格式如下所示。
_thread.start_new_thread(function,args[,kwargs])
参数说明:
Function:线程执行的函数。
Args:元组类型,表示传递给function的参数。
Kwargs:可选参数。
返回值:线程的标识。
_thread.start_new_thread()方法创建一个新线程并返回其标识。
【例】使用_thread模块的start_new_thread()方法创建一个新线程。具体代码如下所示。
import _thread
import time
评论
还没有评论。