前 言

(一)

在多年从事C语言、C++和Java教学工作中,少不了有学生要求解释如fun(i ++,i ++)这样的问题。有时,到外校进行学术交流时,也不乏同行教师问到这个问题。我感觉,能问到这个问题的学生,无疑是好学生。因为,这个问题虽小,但要解释清楚它,需要涉及非定义行为、赋值表达式的副作用、序列点、程序设计风格等方面的概念,这些概念在相关教材中几乎不见提到,许多教师也不清楚。更让我吃惊的是,当我给一位从事了30多年C与C++教学的大学副教授讲赋值表达式的副作用时,他竟然回了我一句:“我不这样认为。”这足以说明问题的严重性了。

实际上,与其说是赋值操作的副作用,不如说是“变量”的副作用。这似乎是一个不可逾越的鸿沟。因为“值的变化”是变量的基本性质。然而,这个问题在Python中被解决了,因为它的数据多数属于不可变类型。对于不可变类型的变量赋值,就成为引用指向另外一个对象了。这确实是Python的一大突破。Python有许多让人耳目一新的特点,正是这些特点,使它得到了快速推广,并赢得广泛的支持。

2017年7月19日,IEEE(美国电气电子工程师学会)出版的旗舰杂志IEEE Spectrum发布了第4届顶级编程语言交互排行榜。这个排行榜由读者需求、用户增速、开源、设计自由度、雇主需求5个子排行榜组成。其中,前4个子排行榜中都是Python力压群雄,只有雇主需求一榜位于C和Java之后,排名第三。图1为IEEE Spectrum 2017 编程语言 Top 10 排名情况。

图1 IEEE Spectrum 2017编程语言Top 10排名情况

据 IEEE Spectrum介绍,这个排行依据数据记者 Nick Diakopoulos 提供的数据,结合 10 个线上数据源的 12 个标准,对 48 种语言进行了排行。因为不可能顾及每一个程序员的想法,IEEE Spectrum使用多样化、可交互的指标权重来评测每一种语言的现行使用情况。显然,这个排行的客观性、权威性是极高的。

另一个影响极大的程序设计语言排行榜是TIOBE。TIOBE排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、百度)以及Wikipedia、Amazon、YouTube统计出排名数据,但只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,也不反映就同一算法使用不同语言编写时代码数量多少。表1是其2017年10月发布的Top 10榜单。可以看出,Python虽位居第5,但它有上升趋势,而前4名均有下降趋势。

表1 TIOBE 2017年10月发布的程序设计语言Top 10榜单

2017年10月2016年10月变化编程语言评级/%变化/%11Java12.431-6.3722C8.374-1.4633C++5.007-0.7944C#3.858-0.5155Python3.803+0.0366JavaScript3.010+0.2677PHP2.790+0.0588Visual Basic .NET2.735+0.08911↑Assembly language2.374+0.141013↑Ruby2.324+0.32

(二)

Python应用广泛,所包含的内容自然也十分广泛。但是作为关于Python的基础教程,不可能把所有内容都包含进来,甚至不可能包含较多的内容,内容选择非常重要。作者经过反复斟酌,决定采取以Python核心语法为重心,添加关键性的、基础性的应用型内容。最后,将应用型内容圈定在数据处理、网络编程和GUI设计3个方面,并把全书按照7个单元进行组织。前4个单元为Python的核心语法知识,后3个单元为3个应用 方面。

第1单元介绍Python的基本知识,内容包括Python的特点、数据对象、变量、输入输出等,使读者对Python有初步了解。

第2单元为Python程序结构,内容包括选择结构、循环结构、函数、模块、异常 处理。

第3单元为容器,内容包括序列容器、无序容器、迭代器、生成器与推导表达式。

第4单元为面向类的程序设计,内容包括类与对象、类与对象的通用属性与操作、类的继承。

第5单元为Python数据处理,内容包括文件操作、数据库操作、文件与目录管理。

第6单元为Python网络编程,内容包括Python Socket编程、Python WWW开发。

第7单元为Python GUI开发,内容包括GUI三要素、GUI程序结构、GUI制作 示例。

著名心理学家皮亚杰创建的结构主义,把教师的主要职责定义为为学习者创建学习环境。作为Python教材,本书把附录和习题作为正文之外的两个重要的学习环境。本书的附录包括Python运算符、Python内置函数、Python标准模块库目录和Python 3.0标准异常类结构。

除了语言的内核和内置函数,模块是Python的最大支撑。在Python中,每一项应用都要由相应的模块支持。每一个应用程序的开发都需要按照“熟悉领域知识—导入相关模块—设计相应算法—编写相应代码”的过程。由于Python开源代码的特点和社区广大热心者的支持,目前Python已经有上千的模块可以利用。读者知道哪些模块可用,不仅可以开阔思路,而且可以浏览这些模块目录得到通向该应用领域的线索。不过,要把这些模块全罗列出来不仅没有必要,也没有可能。这是将Python 3.0标准模块库目录作为附录的原因。虽然仅仅只有29项,但足可以对Python的应用范围画出一个轮廓。

习题也是重要的学习环境。为此本书收集并设计了多种类型的习题,并且在每节后面都给出相应的练习题。本书习题量虽多,却还是无法满足不同的练习需要。希望学习者和使用本书的老师们,不要囿于本书给出的习题,要开发出更多课后练习,开辟更好的Python学习环境。还需要说明的是,不是每一个题目都能直接在正文中找到答案。要找到正确的答案,需要深刻理解基本概念,或需要自己设计一些代码测试分析。这样才能培养出举一反三的能力、创新的能力。

本书所有例题都在Python 3.6.1的交互环境中调试。本书也推荐在Python 3.0的交互环境平台上教学或自学,在交互式环境中学习,有利于立即发现错误和理解错误原因。为便于阅读,文中将系统输出的内容用蓝色印出。其中,蓝色粗体为出错信息(在IDLE中是红色)。

(三)

教材是教学的剧本,是学习的向导。要编写一本好的教材,不仅需要对本课程涉及内容有深刻的了解和感悟,还要熟悉相关领域的知识,更要不断探讨和深化贯穿其中的教学理念和教育思想,写教材是件很难的事情。特别是在不断的写作中,常感到自己知识和能力的不足。由于是已经有了一些想法才开始写作的,又不忍将这些想法隐藏起来,还由于已经得到一些亲朋的支持和鼓励,也不忍辜负他们的一片热情,只能硬着头皮写下去,也幸有他们的帮助,才最后得以完成本书。在本书的写作过程中,赵忠孝教授、姚威博士、张展为博士,以及魏士婧、刘砚秋、张秋菊、史林娟、张有明、戴璐、张展赫、吴灼伟(插图)等参加了有关部分的编写工作,在此谨表谢意。

本书就要出版了。它的出版,是我在这项教学改革工作中跨上的一个新台阶。本人衷心希望得到有关专家和读者的批评与建议,也希望能多结交一些志同道合者,把这本书改得更好。

张基温

丁酉菊月于穗小海之畔??

??

??

??

??

·IV·

·I·

more >

大学python用什么教材-清华大学出版社-图书详情-《Python大学教程》相关推荐

  1. 计算机系微积分教材,清华大学出版社-图书详情-《大学数学(微积分)》

    前言 随着我国经济.社会的发展,为了适应应用型高等数学教育的教学改革和教材建设的需求,我们组织了一批有丰富教学经验的教师编写了本书.本书以应用.实用和适用为基本原则,淡化理论并突出实践.在本书的编写过 ...

  2. python编程入门书-清华大学出版社-图书详情-《Python编程入门与案例详解》

    Python是一门解释型语言,由荷兰的Guido van Rossum在1989年圣诞节期间发明,于1991年公开发布.在设计之初,Python语言被定位在是解释型语言,语法优雅.简单易学.开源.拥有 ...

  3. 大学计算机信息技术实践教程,清华大学出版社-图书详情-《大学信息技术基础实验教程(Windows7 + Office2010)》...

    "信息技术基础"课程实践性很强,实验是教学过程中必不可少的重要环节,提高实验教学质量是培养学生计算机基本操作能力和综合应用能力的重要途径.为了满足高等学校培养计算机应用创新型人才的 ...

  4. 大学计算机基础清华大学出版社 山东省高等学校教学改革项目,清华大学出版社-图书详情-《大学计算机基础(第2版)》...

    前言 大学计算机基础(第2版)随着社会信息化不断向纵深发展,各行各业的信息化进程不断加速.计算机已经广泛应用于电子商务.电子政务.数字化管理.科学计算.自动控制.辅助设计以及人们的日常生活.学习计算机 ...

  5. 关于计算机基础介绍的书,清华大学出版社-图书详情-《大学计算机基础》

    为适应信息时代的人才需求,大学计算机基础课程已经成为高等学校基础课程的一部分,成为继高等数学及大学英语之后的又一个基础平台.另一方面,随着我国高等教育的发展,大多数高等学校的人才培养定位从传统的精英型 ...

  6. 计算机常用办公软件应用书籍,清华大学出版社-图书详情-《大学计算机基础——常用办公软件》...

    我国高等院校的计算机教育分为专业教育和基础教育,基础教育的目标就是普及计算机基础知识并推广应用.众所周知,现今计算机技术的应用已经渗透到人类生产.生活.工作的各个方面,其原因就在于计算机处理数据的高速 ...

  7. 计算机程序设计基础教材,清华大学出版社-图书详情-《计算机程序设计基础》...

    前 言 从20世纪70年代的结构化程序设计,到90年代的面向对象技术,程序设计技术在不断发展.目前国内各高校开设的程序设计课程种类繁多,选取的第一门程序设计课程也不相同. 教育部2003年颁发了计算机 ...

  8. 计算机导论以python为舟大纲,清华大学出版社-图书详情-《计算机科学导论——以Python为舟(第3版)》...

    序 笔者深信专业的基础课程对学生至关重要,应当由最优秀的教授用最好的教材来讲授,不仅能激发学生的兴趣,开拓学生的思维,更能够使学生领略"学通"的广度与"贯穿"的 ...

  9. c语言程序设计实训教材,清华大学出版社-图书详情-《C语言程序设计实训》

    前言 程序设计是计算机专业领域中最核心的工作.在计算机领域中,任何好的创意和设计最终都需要通过高水平的程序设计实现,才能够真正成为有社会价值.市场价值的产品.但是,目前常规的计算机科学和程序设计课程都 ...

最新文章

  1. RHEL6.3安装vsftpd
  2. spring框架学习(二)依赖注入
  3. 数据结构----数组与广义表专题
  4. 前端ui 后台管理系统 简洁_Github上前端不可不知的可视化后台管理系统(1)
  5. js 判断是否是IE浏览器及ie版本
  6. 很多程序员都在抱怨加班多,觉得该做的都做了,别人没做的,自己都做了。为什么?为什么别人能拿到几万的工资,自己只能拿到零头呢?
  7. 排除表_【收藏】常见电气故障及排除故障方法
  8. 关于编程开发的最小系统学习法
  9. 架构与设计的流程和核心概念笔记:三、业务层设计
  10. 饮用水公司配送管理系统可行性报告
  11. malloc 函数详解
  12. 《玩透嵌入式C的角角落落》深入分析sprintf和printf函数
  13. 读《沟通的方法》推荐序有感
  14. 【jzoj 4727】【NOIP2015模拟10.28B组】终章-剑之魂 {贪心}
  15. 算法刷题——字符串| 给定一个字符类型数组chas[],判断chas中是否所有的字符都只出现过一次
  16. 计算机怎样改成游戏机,手把手教你安装batocera系统,把旧电脑变成万能影音游戏主机...
  17. CSS-选择器的优先级
  18. 大数据周会-本周学习内容总结011
  19. 【目录】从苏宁电器到卡巴斯基
  20. 什么是光耦隔离?光耦隔离的主要作用

热门文章

  1. 徘徊于win和ubuntu
  2. 简单的JS统计静态网站访问次数
  3. (第十一周)考试系统测试报告
  4. 进程调度(第三章 处理调度与死锁)
  5. 教你修改Linux下高并发socket最大连接数所受的各种限制
  6. 016--VS2013 C++ 透明动画
  7. iOS UI基础-11.0 UINavigationController
  8. EPUB CFI 规范
  9. [转]Silverlight在调用wcf时传输数据过大返回Not Found的解决办法
  10. 极其好用好学的规则引擎 - A2D规则引擎