本书深入浅出讨论了各种Python编程主题。利用从本书学到Python知识,你会对自己的编程技能充满信心,并掌握开发高质量程序背后的逻辑。全球知名教育作家Tony Gaddis采用一种易懂的、循序渐进的方法来介绍基本的编程概念。先从控制结构、函数和列表等概念开始,再深入讨论类。这有助于确保读者理解基本的编程概念,并知道如何解决现实中的问题。每一章都包括清晰美观的代码清单、真实世界的例子和大量练习。
第6版针对Python 3.11进行了全面更新,新增或改进了大量主题,包括:with
语句(第6章)、多重赋值(第2章)、单行if
语句(第3章)、条件表达式(第3章)、海象操作符和赋值表达式(第3章和第4章)、while
循环作为计数控制循环(第4章)、单行while
循环(第4章)、为循环使用break/continue/else(
第4章)、仅关键字参数(第5章)、仅位置参数(第5章)、默认实参(第5章)、为列表使用count
和sum
(第7章)、在元组中存储可变对象(第7章)以及字典合并和更新操作符(第9章)。
下载配套资源(中英文版代码、教参)和试读PDF(1-6章、附录):ys168网盘 百度网盘
译者序
Python起源于1989年末。当时,CWI(阿姆斯特丹国家数学和计算机科学研究所)的研究人员Guido van Rossum需要一种高级脚本编程语言,为他的研究小组的Amoeba分布式操作系统执行管理任务。为了创建这种新语言,他从高级教学语言ABC(All Basic Code)汲取了大量语法,并从系统编程语言Modula-3借鉴了错误处理机制。然而,ABC的一个重大缺点是扩展性不足;语言不是开放式的,不利于改进或扩展。因此,Van Rossum决定在新语言中,合成来自现有语言的许多元素,但要求必须能通过类和编程接口进行扩展。他将这种新语言命名为Python(大蟒蛇)——来源于当时流行的BBC喜剧片集“Monty Python”(巨蟒剧团)。
自1991年初公开发行后,Python开发人员和用户社区逐渐壮大,使其逐渐演变成一种成熟的、并获得了良好支持的编程语言。人们用Python开发了大量应用程序,从创建网上电子邮件程序,到控制水下自走车辆,以及配置操作系统和创建动画片,再到最近爆火的AI应用等等。
Python是一种模块化的可扩展语言;它能随时集成新的“模块”(modules)——这是一种可重用的软件组件。任何Python开发人员都能写自己的新模块,对Python的功能进行扩充。Python源代码和模块的一个重要集散地是官方的PyPI(pypi.org)。
Python经过了良好的设计,无论新手还是有经验的程序员才能快速学习和理解这种语言,并能轻松上手。和其他语言不同,Python具有良好的移植和扩展能力。Python的语法和设计促进了良好的编程实践,而且可以在不牺牲程序扩展性与维护性的同时,显著缩短开发时间。
自2003年翻译并出版了Deitel著名的《Python编程金典》(Python How to Program)一书后,虽然译者没有继续从而这个主题的翻译,但在工作中一直在使用这种方便、快捷的语言,而且亲身经历了它从2.x到3.x版本的迭代。时至今日,Python已经取得了长足的发展,应用越来越广泛,其用户视区也越来越壮大。根据TIOBE的最新排行,Python已经长时间占据编程语言排行榜的第一位,流行度达到13.42%(2023年7月)。这背后虽然有人工智能(AI)爆火的推动,但我们不要忘记,Python之所以流行,还是跟它本身的特点有关。
作为一种通用语言,Python 可以用于各种应用程序,“简单易用” 的特点也使得它成为用于自动化任务、构建网站或软件和分析数据的不错的选择。 此外,易读、开源、跨平台、可扩展性、具有一个强大的标准库等特性,也使其在开发人员和工程师中很受欢迎。
今天,我很高兴为大家介绍《学习Python》第6版。由全球知识教育作家Tony Gaddis编写的这本教科书是学习Python编程的绝佳入门之选。本书覆盖了从基础概念到实际应用的全套Python知识。无论你是初次接触编程,还是想要从其他编程语言过渡到Python,这本书都能帮助你轻松上手。书中以清晰而易懂的语言,系统地介绍了Python的核心概念、语法、数据类型、控制结构、面向对象编程、GUI编程和数据库编程,为你建立一套完整的知识体系。
Tony Gaddis在书中注重理论与实践的结合。通过丰富的示例、练习和项目,你有机会将所学的知识应用于实际问题的解决中。无论是编写小型脚本还是构建复杂的应用程序,你都将通过实际动手实践而深入理解Python编程的精髓。
此外,本书强调了编程思维和解决问题的能力。每一章都配有精心设计的练习,旨在锻炼你的逻辑思维和创新能力。通过解决各种不同难度级别的编程挑战,你将逐步培养自己的编程思维,并在解决实际问题时游刃有余。
另外,本书的源代码大多进行了中文本地化,包括注释、程序中显示的文本等。除此之外,还对书中的一些bug(有些是祖传的)进行了修正。请访问译者主页https://bookzhou.com下载中文版资源。
我衷心相信,《学习Python》第6版将成为您学习Python编程的得力伴侣。无论你的背景和经验如何,都能在这本书中找到合适的内容,逐步掌握Python编程的精髓。希望您在学习的过程中获得乐趣,掌握实用的技能,为未来的学习和职业发展打下坚实的基础。
祝愿您在《学习Python》第6版的学习旅程中取得丰硕的成果!
——周靖,2024年6月于北京
中文版勘误:
感谢老菜:
61页第14行:“第一个语句将值45赋给name变量”,
79页第14行:“位于中心点左侧的像素具有正的X坐标值”
中文版:《学习Python》第6版;ISBN:9787302657415
翻译:周靖
英文版:Starting Out with Python, Sixth Edition;ISBN:9780137871209
作者:Tony Gaddis
勘误:
第658页倒数第二个代码段,即“另一个办法是直接…”的上面那个代码,
代码中的“cur.execute(sql)”代码行的缩进应该和“sql = ”’CREATE TABLE …”代码行的缩进一致。
谢谢,所有勘误会反映到下一次印刷中。
勘误:
第542页程序11.4中第一行的注释:
“# Car 类代表皮卡。它是”
根据代码所示,这里应该需要修改成:
“# Truck 类代表皮卡。它是”。
第557页选择题第3题,a和b选项都是Airplane,其中需要修改成JumboJet。
第568页程序12.6的第19行代码:
“rentun gcd(x, x % y)”
根据上文所述,应该是需要修改成:
“rentun gcd(y, x % y)”
勘误:
第400页倒数第二段:
“本例将步长育设为2,…”
其中的“育设”应该修改成“预设”。
第413页程序8.8中第三个注释:
“# 打印长度不断递减的九行”
根据“for count in range(8,0,-1):”
这里应该是只会打印8行,所以应该修改成:
“# 打印长度不断递减的八行”
第433页第二段:
“也可以使用内置的dict() 方法创建一个空字典,…”
其中“dict() 方法”应该修改成“dict() 函数”。
第484页第一段:
“这是必须要有的的,”
其中应该是多了一个“的”字。
第488页第四段:
“注意,虽然sideup方法有self形参变量,”
其中“sideup方法”,根据上下文,应该修改成“get_sideup方法”。
第504页代码的第30行:
“print”没有加上括号,根据第505页的程序输出,这一句应该是需要去掉的。
勘误:
第280页最后一段:
“该方法将整行作为一个字符串返回,基保包括\n。”
其中的“基保”应该是需要修改成“即”。
第286页倒数第三行和倒数第一行中的“22/n”应该修改成“22\n”,斜杆问题。
第297页,程序 6.14 read_with.py中的line = infile.read()应该修改成line = infile.readline()。
第298页,程序 6.15 multiple_with.py中的line = infile.read()也应该修改成line = infile.readline(),且其中的outfile.write(f'{line}’) 应该需要在后面加上\n,即outfile.write(f'{line}\n’)。
第301页,第二段中:
“在文件中存储记录的程序通常需要比简单的记录读写更多的功能。“
这句话读起来有点不通顺的感觉。我觉得应该可以修改成:
“与简单的记录读写程序相比,在文件中存储记录的程序通常需要更多的功能。“
第355页,最后一段:
“从choice 函数返回的列表有时包含重复元素。”
应该修改成:
“从choices 函数返回的列表有时包含重复元素。”
因为choice函数只会返回一个元素。
勘误:
第220页最后一段:
“但由于形参tax_rate已经有了一个默认实参,所以可以忽略向它赋的值,…”
这句话感觉有点问题,问题在“忽略”和“向它赋的值”。如果说show_tax函数“忽略” “向它赋的值”是默认实参,则没有问题。如果说是调用方“忽略” “向它赋的值”,则有点说不过去。
故,我觉得可以修改成:
“但由于形参tax_rate已经有了一个默认实参,所以可以省略向它赋值,…”,
用“省略” 代替 “忽略”,用“向它赋值” 代替 “向它赋的值”。
第228页最后一行的代码:
number = random.randint (1, 100)
应该去掉random.randint 与 (1, 100) 之间的空格,虽然这样可以在Python在执行,但去掉空格,相较来说比较不会引起歧义。
第333页第一段之后的代码:
x = random.randint (1, 10) * 2
应该去掉random.randint 与 (1, 10) 之间的空格,虽然这样可以在Python在执行,但去掉空格,相较来说比较不会引起歧义。
第256页中:
“但是,你并不希望在导入程序A时时执行它的main函数。”
其中的“时时”,感觉应该去掉其中的一个“时”。但“时时”这个词,表示“每次都”的意思,这样感觉又是合理。
所以我觉得,应该可以直接修改成:
“但是,你并不希望在导入程序A后,每次都执行它的main函数。”
这样一来读起来也许会比较通顺一点。
第264页,选择题第9题中的c选项“范围”,我觉得应该替换成“作用域”。
勘误:
第220页第一段:
“它在之前的所有形参都是仅位置参数,…“
应该是
“在它之前的所有形参都是仅位置参数,…“
勘误:
第59页表格的最后一行中的 ‘\ \’ 中间不应该有空格。
第123页和第124页的表格中的true和false,应该修改成True和False(正如在第127页所示)。
勘误:
第3页最后一段:
“之所以叫这个名字,是因为CPU能快速存储在RAM中任意随机位置的数据。”
这段话,我觉得应该修改成:
“之所以叫这个名字,是因为CPU能将数据快速存储在RAM中任意随机位置上。”
或修改成:
“之所以叫这个名字,是因为CPU能快速存取在RAM中任意随机位置上的数据。”
第5页,第一段中的:
“磁盘驱动器和U盘也被认为是输入设备,因为…”
以及
第二段中:
“硬盘驱动器和U盘也被认为是输出设备,因为…”
我觉得,这里的“磁盘驱动器”和“硬盘驱动器”有点混用了,都改成“磁盘驱动器”会比较好点,(我查了下,说磁盘驱动器的范围包括了硬盘驱动器。)
第10页,第一段:
“其采样率为44.1khz(表示每秒种采集和处理44100个样本)”
其中的“每秒种”应该修改成“每秒钟”。
第11页,倒数第二段和倒数第一段中的“磁盘驱动器”和“硬盘驱动器”,我觉得应该也可以都修改成“磁盘驱动器”。