[关闭]
@artman328 2020-09-03T06:48:24.000000Z 字数 7020 阅读 1377

Python 语言程序设计

python


绪论

1. 什么是计算机语言

计算机语言用于指示计算机根据一定程序完成特定任务。虽然计算机语言有很多,但在计算机内部,计算机真正能理解的只是:

机器语言
在计算机内部,计算机语言表现为以8位二进制为一个单位(字节)的指令,这一形式的语言就是机器语言。这些指令是由CPU的指令系统决定的。机器语言属于低级语言的最低层。

2. 低级语言与高级语言

从计算机语言的抽象程度划分,可分为:

(1)低级语言

这种语言以最“细致”的方式指示计算机进行操作,任何一个具体的操作步骤都由程序进行说明。

比如做饭,在低级语言里,要发出的指令可能是:
1、从米缸里取出2两米;
2、将米盛入一个容器;
3、向容器中注入一升水;
4、搅动容器中的物质10秒;
5、将容器中的水倒出;
6、从第3步开始到行5步重复3次;
7、打开电饭煲并将容器中的米倒入;
8、向电饭煲内注入300毫升水;
9、关上电饭煲;
10、按下电饭煲“煮饭”键。

最典型的低级语言是:

汇编语言
以数字形式编写程序是难以让人理解的,因此,有了汇编语言。汇编语言以人类可以理解的形式编写程序,最后再编译成二进制指令程序。汇编语言只是数字指令代码的一种形式,是最接近二进制指令程序的一种计算机语言。汇编语言是低级语言。

(2)高级语言

将计算机的一些通用操作做高度抽象化,以人类可以理解的逻辑和形式编写程序。但这些高级语言最终将会被“编译”或“解释”成计算机内部的数字形式的低级语言。

比如在高级语言中,以上做饭的过程可能只是一条语句:
“用电饭煲做2两米的米饭”。
但最终会被“编译”或“解释”成以上的10步操作。

高级语言有很多,如:
C, C++, Java, C#, Python, PHP, Ruby, JavaScript, Objective-C, Pascal, Visual Basic, SQL, Swift, Flutter, Go, Kotlin ...

3. 编译型语言与解释型语言

根据最终的执行形式,高级计算机语言可划分为以下两大类:

编译型语言
这一类语言编写的程序需要编译成机器语言,整个程序需要编译后成完整的机器语言程序后才能执行。最终的程序是一个机器语言的程序。“编译后执行”是它的特点。
这类语言又分为两类,一类是针对操作系统进行编译的语言,如:C, C++ ...,编译的程序只能在特定的操作系统中运行。

另一种是针对虚拟机进行编译的语言,如:Java,Kotlin..., 只要在不同的操作系统中安装有供其运行的“虚拟机”,它就能在这些操作系统中运行,实现“跨平台”运行——“编写一次,随处运行”。

解释型语言
这一类语言不需要编译,由一个叫做“解释器”的程序负责按句读取并解释成机器代码进行执行,“边解释边执行”是它的特点。这类语言包括:JavaScript, PHP, Python, Ruby ..., 只要在不同的操作系统中安装有对其解释并运行的“解释器”,它就能在这些操作系统中运行,实现“跨平台”运行——“编写一次,随处运行”。

4. 动态类型语言与静态类型语言

根据对变量类型的使用限制,高级计算机语言又分为:

动态类型
变量的类型会根据装入的数据类型自动改变。具有此特征的计算机语言叫动态类型语言。
静态类型
变量的类型一经声明,就只能装入那一类型的数据,不能装入其它类型。具有此特征的计算机语言叫静态类型语言。

5. 过程式编程语言和面向对象的编程语言

过程式编程与面向对象编程是高级计算机语言采用的两种主要编程方式。

(1)过程式编程

过程式语言通常提供大量内建函数(函数:一种对数据完成处理的程序单元),程序使用了大量内建函数和自定义的函数来处理数据,数据被传递给函数,函数返回处理结果。
在过程式编程中,数据和处理数据的程序是分离的,但程序与数据的结构和处理要求高度耦合,程序是针对数据的结构而“定制”的,很难拿去处理不同结构和处理要求的数据。
也就是说,这种类型的编程,程序代码很难得到重用。

(2)面向对象编程

人类处理任何事务都是一个由人参与的事物处理过程。面向对象编程模拟了这种过程,它采用“超自然”的方式,将参与事务处理的人、组织、事物等全部视为具有生命的个体,赋予它们“属性”(数据)和规定它们的“行为”(处理数据),这样,它们就能通过交互完成事务的处理过程。

6. Python 是什么样的计算机语言

Python 是一种动态类型的、解释型高级计算机语言,它可以混合采用过程式编程面向对象编程

第一部分 认识 Python

第 1 章 Python 语言介绍

1.1 Python 语言发展史

Python是一种广泛使用的通用高级编程语言。它最初由Guido van Rossum于1991年设计,并由Python Software Foundation开发。它主要是为了强调代码的可读性而开发的,其语法允许程序员用更少的代码行来表达概念。

在1980年代后期,历史即将被书写。正是那时开发 Python 的工作开始进行。此后不久的1989年12月,Guido Van Rossum 在荷兰的 Centrum Wiskunde&Informatica(CWI)公司开始了应用程序的开发工作。最初,Python 只是 Rossum 让自己能够在圣诞节期间得以消遣的一个业余项目。据说 Python 是编程语言 ABC 的继任者,ABC 语言与 Amoeba 操作系统接口并且具有异常处理功能。在 Rossum 的职业生涯的早期,他已经帮助创建了 ABC,并且他已经看到ABC的一些问题,但是仍喜欢它的大多数功能。在那之后,他采用了ABC的语法及其一些出色功能,创建了一种好的脚本语言,消除了 ABC 原有的所有缺陷。Python 这个名字的灵感来自英国广播公司的电视节目“ Monty Python's Flying Circus”,因为他是电视节目的忠实拥护者,并且他想为他的发明取一个简短,独特且略带神秘的名字,因此他将其命名为Python!

该语言终于在1991年发布。现在,当我们将其与Java,C ++和C进行比较时,会发现它使用的代码数量更少了,概念设计也非常出色。其主要目的是让代码具有可读性和提高开发人员的开发效率

1.2 我为什么要学 Python

如今有数百种编程语言可用,从C和C ++等成熟的语言到Ruby,C#和Lua等较新的条目,再到Java等企业巨头。 选择一种学习语言是困难的。 尽管没有一种语言在每种情况下都是正确的选择,但我认为Python是解决大量编程问题的不错选择,并且如果您正在学习编程,它也是不错的选择。 世界各地成千上万的程序员使用Python,并且这个数字每年都在增长。

Python出于各种原因继续吸引新用户。 这是一种真正的跨平台语言,可以在Windows,Linux / UNIX和Macintosh平台以及从超级计算机到手机的其他平台上同样出色地运行。 它可以用于开发小型应用程序和快速原型,但可以很好地扩展以允许开发大型程序。 它带有一个功能强大且易于使用的图形用户界面(GUI)工具包,Web编程库等。 而且是免费的。

1.3 Python 能做什么?

Python是Guido van Rossum在1990年代开发的一种现代编程语言(并以著名的喜剧团命名)。 尽管Python并非对每种应用程序都完美,但它的优势使其成为许多情况下的理想选择。

1.3.1 Python 容易使用

熟悉传统语言的程序员会发现学习Python很容易。包括所有熟悉的结构,例如循环,条件语句,数组等,但是许多结构在Python中更易于使用。以下是一些原因:

Python非常适合快速应用程序开发。 用Python编码的应用程序花费的时间是用C或Java进行编码的时间的五分之一,而花费的时间仅为等效C程序的行数的五分之一,这并不罕见。 当然,这取决于特定的应用。 对于在for循环中主要执行整数算术的数值算法,生产率的提高要少得多。 对于普通的应用程序,生产率的提高可能是巨大的。

1.3.2 Python 具备表达能力

Python是一种非常有表现力的语言。 在这种情况下,富有表现力的意思是,单行的Python代码比大多数其他语言中的单行代码能做的更多。 更具表现力的语言的优势显而易见:必须编写的代码行越少,完成项目的速度就越快。 不仅如此,而且代码行越少,程序的维护和调试就越容易。

为了了解Python的表达方式如何简化代码,我们考虑交换两个变量var1和var2的值。 在Java之类的语言中,这需要三行代码和一个额外的变量:

  1. int temp = var1; var1 = var2; var2 = temp;

当将变量var2放入变量temp1时,需要使用变量temp来保存var1的值,然后将该变量保存到var2中。 该过程并不十分复杂,但是即使对于有经验的编码人员,阅读这三行内容并了解已经进行了交换也需要一定的开销。
相比之下,Python允许您在一行中进行相同的交换,并且可以通过某种方式使值交换变得显而易见:

  1. var2var1 = var1var2

当然,这是一个非常简单的示例,但是您在整个语言中都可发现类似的优点。

1.3.3 Python 具有可读性

Python的另一个优点是易于阅读。您可能会认为编程语言只需要计算机读取,但是人类也必须阅读您的代码-调试代码的人(很可能是您),维护代码的人(可能是您),以及将来可能想要修改您的代码的人。在所有这些情况下,代码越容易阅读和理解,就越好。
代码越容易理解,调试,维护和修改就越容易。 Python在该部门的主要优势是使用缩进。与大多数语言不同,Python坚持缩进代码块。尽管这有些奇怪,但它的好处是您的代码始终以非常易于阅读的样式进行格式化。
以下是两个简短的程序,一个用Perl编写,另一个用Python编写。两者都采用两个大小相等的数字列表,并返回这些列表的成对和。我认为Python代码比Perl代码更具可读性;它在视觉上更干净,并且包含了更少的难以理解的符号:

  1. # Perl version.
  2. sub pairwise_sum {
  3. my($arg1, $arg2) = @_;
  4. my(@result) = ();
  5. @list1 = @$arg1;
  6. @list2 = @$arg2;
  7. for($i=0; $i < length(@list1); $i++) {
  8. push(@result, $list1[$i] + $list2[$i]);
  9. }
  10. return(\@result);
  11. }
  1. # Python version.
  2. def pairwise_sum(list1, list2):
  3. result = []
  4. for i in range(len(list1)):
  5. result.append(list1[i] + list2[i])
  6. return result

这两段代码执行相同的操作,但是Python代码在可读性方面胜出。

1.3.4 Python 是完整的 -- “电池包含”

Python的另一个优势是它在使用库时的“包含电池”理念。 这个想法是,当您安装Python时,应该具备进行实际工作所需的一切,而无需安装其他库。 这就是Python标准库随附用于处理电子邮件,网页,数据库,操作系统调用,GUI开发等的模块的原因。
例如,使用Python,您可以编写Web服务器以仅两行代码就可以在目录中共享文件:

  1. import http.server
  2. http.server.test(HandlerClass = http.server.SimpleHTTPRequestHandler)

无需安装即可处理网络连接和HTTP的库——它已直接在Python中提供。

1.3.5 Python 是跨平台的

Python还是一种出色的跨平台语言。 Python在许多不同的平台上运行:Windows,Mac,Linux,UNIX等。 由于是经过解释的,因此相同的代码可以在具有Python解释器的任何平台上运行,并且几乎所有当前的平台都具有一个。 甚至还有在Java(Jython)和.NET(IronPython)上运行的Python版本,从而为您提供了运行Python的更多平台。

1.3.6 Python 是免费的

Python也是免费的。 Python最初是,并且将继续在开源模型下开发,并且可以免费获得。您几乎可以下载并安装任何版本的Python,并将其用于开发用于商业或个人应用程序的软件,而无需花一分钱。
尽管态度正在发生变化,但由于担心缺乏支持,有些人仍然担心免费软件,担心他们缺乏付费客户的影响力。但是许多成熟的公司都将Python用作其业务的关键部分。 Google,Rackspace,Industrial Light&Magic和Honeywell只是其中的几个例子。这些公司和许多其他公司都知道Python是什么,它是一种非常稳定,可靠且得到良好支持的产品,具有活跃且知识渊博的用户社区。与大多数技术支持电话线相比,您可以在Python互联网新闻组中更快地获得最困难的Python问题的答案,并且Python答案将是免费且正确的。

Python和开源软件
Python不仅免费,而且还免费提供其源代码,并且您可以随意修改,改进和扩展它。由于源代码是免费提供的,因此您可以自行修改(或雇用某人为您这样做)。使用专有软件,您很少会以任何合理的费用获得此选项。
如果这是您首次涉足开源软件领域,那么您应该了解到,不仅可以自由使用和修改Python,而且还能够(并鼓励)为Python做出贡献并加以改进。根据您的情况,兴趣和技能,这些捐助可能是财务上的,例如向Python软件基金会(PSF)捐款,或者可能涉及参加特殊利益团体(SIG)之一,进行测试并给予关于Python核心或辅助模块之一的版本的反馈,或者将您或您公司开发的部分内容反馈给社区。当然,贡献水平(如果有)取决于您自己;但是如果您有能力回馈,则绝对可以考虑这样做。这里正在创造一些有价值的东西,您有机会添加它。

Python有很多用途:可表达性,可读性,丰富的包含库和跨平台功能,以及它的开源。 有什么收获?

1.4 Python 不能做什么?

尽管Python具有许多优势,但是没有一种语言可以做所有事情,因此Python并不是满足您所有需求的完美解决方案。 要确定Python是否适合您的情况,您还需要考虑Python不能胜任的领域。

1.4.1 Python不是最快的语言

Python的可能缺点是其执行速度。 它不是完全编译的语言。 相反,它首先被半编译为内部字节码形式,然后由Python解释器执行。 有一些任务(例如使用正则表达式进行字符串解析),Python具有高效的实现,并且与您可能编写的任何C程序一样快,甚至更快。 不过,在大多数情况下,使用Python会导致程序运行速度比C语言慢。

但是您应该正确理解这一点。 现代计算机具有如此强大的计算能力,以至于对于大多数应用程序而言,程序的速度并不像开发速度那么重要,因此Python程序通常可以更快地编写。 此外,使用C或C ++编写的模块扩展Python很容易,可用于运行程序的CPU密集型部分。

但 Python 语言并不适合编写要求运行速度很高的实时应用程序。

1.4.2 Python 不适合编写操作系统底层代码

因为 Python 语言具有高度抽象能力,因此并不适合编写操作系统级代码如:驱动程序、共享程序库等。

第 2 章 Python 语言环境安装与配置

2.1 安装 Python

2.2 使用 Python 互动命令行

3.3 使用 IDLE 编写 Python 代码

第 3 章 Python 语言概览

3.1 Python 语言基本特征

3.2 Python 的内建数据类型

3.2.1 数值类型

数值类型包括:
整型(int)
1, 123, -654, 99999999 ....
浮点型(float)
1.23, 18e12, -6e-4 ...
复数类型
3+5j, -10-6j, 5j ...
布尔型
True, False

以下运算符可用于数值运算

序号 运算符 含义 举例
1 + >>> 10+20
30
2 - >>> 10-20
-10
3 * >>> 2e3*10
20000.0
4 ** 次方 >>> 2**3
8
5 / >>> 5/2
2.5
6 // 除(只要整数部分) >>> 5//2
2
7 += 自加 >>> a=10
>>> a+=12
>>>a
22
8 -= 自减 >>> a=30
>>> a-=12
>>>a
18

3.2.2 列表类型

[10,23,'Bill',True, ...]

3.2.3 元组

(10,23,'Bill',True, ...)

3.2.4 字符串

3.2.5 字典

3.2.6 集合

3.2.7 文件对象

3.3 Python 语言的流程控制结构

3.3.1 逻辑值与表达式

3.3.2 if-elif-else 语句

3.3.3 while 循环

3.3.4 for 循环

3.3.5 函数定义

3.3.6 例外

3.4 创建模块(moudule)

3.5 面向对象编程

3.5.1 什么是面向对象编程

3.5.2 封装

3.5.3 继承

3.5.4 多态

第二部分 Python 语言基础

第三部分 高级特性

第四部分 Python 语言应用

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注