python简介

python的起源

 Python的创始人为荷兰人Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是取自英国20世纪70年代首播的电视喜剧《蒙提.派森的飞行马戏团》(Monty Python’s Flying Circus)。

ABC是由荷兰的CWI (Centrum Wiskunde & Informatica, 数学和计算机研究所)开发的。Guido在CWI工作,并参与到ABC语言的开发。ABC语言以教学为目的。与当时的大部分语言不同,ABC语言的目标是“让用户感觉更好”。ABC语言希望让语言变得容易阅读,容易使用,容易记忆,容易学习,并以此来激发人们学习编程的兴趣。

 在那个时候,他接触并使用过诸如Pascal、C、 Fortran等语言。这些语言的基本设计原则是让机器能更快运行。在80年代,虽然IBM和苹果已经掀起了个人电脑浪潮,但这些个人电脑的配置很低 (在今天看来)。比如早期的Macintosh,只有8MHz的CPU主频和128KB的RAM,一个大的数组就能占满内存。所有的编译器的核心是做优化,以便让程序能够运行。为了增进效率,语言也迫使程序员像计算机一样思考,以便能写出更符合机器口味的程序。在那个时代,程序员恨不得用手榨取计算机每一寸的能力。有人甚至认为C语言的指针是在浪费内存。至于动态类型,内存自动管理,面向对象…… 别想了,那会让你的电脑陷入瘫痪。

 然而,这种思考方式让Guido感到苦恼。Guido知道如何用C语言写出一个功能,但整个编写过程需要耗费大量的时间 (即使他已经准确的知道了如何实现)。他的另一个选择是shell。Bourne Shell作为UNIX系统的解释器(interpreter)已经长期存在。UNIX的管理员们常常用shell去写一些简单的脚本,以进行一些系统维护的工作,比如定期备份、文件系统管理等等。shell可以像胶水一样,将UNIX下的许多功能连接在一起。许多C语言下上百行的程序,在shell下只用几行就可以完成。然而,shell的本质是调用命令。它并不是一个真正的语言。比如说,shell没有数值型的数据类型,加法运算都很复杂。总之,shell不能全面的调动计算机的功能。

 Guido希望有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻松的编程。ABC语言让Guido看到希望。就这样,Python在Guido手中诞生了。可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。

python的诞生

 1991年,第一个Python编译器(同时也是解释器)诞生。它是用C语言实现的,并能够调用C库(.so文件)。从一出生,Python已经具有了:类(class),函数(function),异常处理(exception),包括表(list)和词典(dictionary)在内的核心数据类型,以及模块(module)为基础的拓展系统。

Python的特点

  • 什么是Python
     当看书或者教学视频的时候,我们经常会看到Python是一门跨平台、开源、免费的解释型高级动态编程语言。其实Python的特点还有很多很多:

  • 高级
     Python有像C++、java一样的高级的数据结构,这样就减少了以前“框架”开发需要的时间。像 Python 中的列表(大小可变的数组)和字典(哈希表)就是内建于语言本身的。在核心语言中提供这些重要的构建单元,可以鼓励人们使用它们,缩短开发时间与代码量,产生出可读性更好的代码。

  • 面向对象
     面向对象编程为数据和逻辑相分离的结构化和过程化编程添加了新的活力。面向对象编程支持将特定的行为、特性以及功能与它们要处理或所代表的数据结合在一起。Python 的面向对象的特性是与生俱来的。

  • 可升级
     Python 提供了基本的开发模块,你可以在它上面开发你的软件,而且当这些需要扩展和增长时,Python 的可插入性和模块化架构则能使你的项目生机盎然和易于管理。

  • 可扩展
     Python具有高可扩展性,存在许多使用 C 语言或 Fortran 编写扩展的方法。必要时,Python 代码可以直接将这些扩展作为子例程来调用。

  • 可移植性
     在各种不同的系统上可以看到 Python 的身影,这是由于在今天的计算机领域,Python 取得了持续快速的成长。因为 Python 是用 C 写的,又由于 C 的可移植性,使得 Python 可以运行在任何带有 ANSIC 编译器的平台上。尽管有一些针对不同平台开发的特有模块,但是在任何一个平台上用 Python 开发的通用软件都可以稍事修改或者原封不动的在其他平台上运行。这种可移植性既适用于不同的架构,也适用于不同的操作系统。

  • 易学易读易维护
     Python关键字少、结构简单、语法清晰。这样就使得学习者可以在相对更短的时间内轻松上手。Python 与其他语言显著的差异是,它没有其他语言通常用来访问变量、定义代码块和进行模式匹配的命令式符号。通常这些符号包括:美元符号($)、分号(;)、波浪号(~)等等。这样的设计使得 Python代码变得更加定义清晰和易于阅读。因为 Python 本身就是易于学习和阅读的。所以维护起来便更简单一些。

  • 健壮性
     Python 提供了“安全合理”的退出机制,让程序员能掌控局面。一旦你的 Python 由于错  误崩溃,解释程序就会转出一个“堆栈跟踪”,那里面有可用到的全部信息,包括你程序  崩溃的原因以及是那段代码(文件名、行数、行数调用等等)出错了。这些错误被称为  异常。如果在运行时发生这样的错误,Python 使你能够监控这些错误并进行处理。

 这些异常处理可以采取相应的措施,例如解决问题、重定向程序流、执行清除或维护步骤、正常关闭应用程序、亦或干脆忽略掉。无论如何,这都可以有效的缩减开发周期中的调试环节。Python的健壮性对软件设计师和用户而言都是大有助益的。一旦某些错误处理不当,Python 也能提供一些信息,作为某个错误结果而产生的堆栈追踪不仅可以描述错误的类型和位置,还能指出代码所在模块。

  • 高效的快速原型开发工具
     Python 有许多面向其他系统的接口,它的功能足够强大,本身也足够强壮,所以完全可以使用 Python 开发整个系统的原型。Python有完备的标准库也有很多第三方扩展库,这些使得我们可以更加快速的开发出系统。

  • 内存管理器
     在 Python 中,由于内存管理是由 Python 解释器负责的,所以开发人员就可以从内存事务中解放出来,全神贯注于最直接的目标,仅仅致力于开发计划中首要的应用程序。这会使错误更少、程序更健壮、开发周期更短。

  • 解释性和(字节)编译性
     计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。而这种转换的方式有两种:编译、解释。

  1. 编译型:在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。比如C语言、C++等为编译型语言。编译型语言的执行过程:源代码 ——>编译——>目标代码——>执行——>输出。比如C语言的编译过程中生成的文件为.c源文件——>.obj目标文件——>.exe可执行文件。

  2. 解释型:解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序。解释型语言每次运行都需要将源代码解释称机器码并执行,效率较低;只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植。Python、java、JavaScript 、Shell等都是解释型语言。解释型语言执行过程:源代码 ——>解释器——>输出。

 Python 是一种解释型语言,这意味着开发过程中没有了编译这个环节。一般来说,由于不是以本地机器码运行,纯粹的解释型语言通常比编译型语言运行的慢。然而,类似于 Java,Python实际上是字节编译的,其结果就是可以生成一种近似机器语言的中间形式。这不仅改善了 Python的性能,还同时使它保持了解释型语言的优点。

Python的应用领域

人工智能

 MASA和Google早期大量使用Python,为Python积累了丰富的科学运算库,当AI时代来临后,Python从众多编程语言中脱颖而出,各种人工智能算法都基于Python编写,尤其PyTorch之后,Python作为AI时代头牌语言的位置基本确定。  Python拥有强大而丰富的库以及数据分析能力。比如说在神经网络、深度学习方面,Python都能够找到比较成熟的包来加以调用。而且Python是面向对象的动态语言,且适用于科学计算,这就使得Python在人工智能方面备受青睐。虽然人工智能程序不限于Python,但依旧为Python提供了大量的API,这也正是因为Python当中包含着较多的适用于人工智能的模块,比如sklearn模块等等。调用方便、科学计算功能强大依旧是Python在AI领域最强大的竞争力。

大数据分析与处理

 Python也是一个比较完善的数据分析生态系统,其中matplotlib经常会被用来绘制数据图表,它是一个2D绘图工具,有着良好的跨平台交互特性。再比如Pandas也是Python在做数据分析时常用的数据分析包,也是很好用的开源工具。Pandas可对较为复杂的二维或三维数组进行计算,同时还可以处理关系型数据库中的数据。Python的SciPy还可有解决很多科学计算的问题,比如微分方程、矩阵解析、概率分布等数学问题。

Web开发应用

 Python拥有很多免费数据函数库、免费web网页模板系统、以及与web服务器进行交互的库,可以实现web开发,搭建web框架,目前比较有名气的Python web框架为Django。全球最大的搜索引擎 Google,在其网络搜索系统中就广泛使用 Python 语言。另外,我们经常访问的集电影、读书、音乐于一体的豆瓣网,也是使用 Python 实现的。

网路爬虫

 在爬虫领域,Python几乎是霸主地位,将网络一切数据作为资源,通过自动化程序进行有针对性的数据采集以及处理。Python 提供有很多服务于编写网络爬虫的工具,例如 urllib、Selenium 和 BeautifulSoup 等,还提供了一个网络爬虫框架 Scrapy。

软件自动化测试

 随着软件产业的发展,电子商务时代及移动互联网时代的到来,软件及系统测试已经越来受到重视。而且软件和系统开发的模式也发生了巨大的改变,在开发的过程中更早的引入测试,以及开发和测试融合成了主流, 如当前流行的TDD, Agile, Scrum开发模式等。这个时候,手动测试局限性和弱点就凸现出来了。自动化测试的必要性和紧迫性快速的增长。而自动化测试开发最广泛使用的开发语言很显然就是当今急速流行的动态的面向过程的脚本语言Python。

游戏开发

 很多游戏使用C++编写图形显示等高性能模块,而使用Python或者Lua编写游戏的逻辑、服务器。Python支持更多的特性和数据类型。构思实现,产品早期原型和迭代。比如著名的魔兽世界、文明帝国、阴阳师等都是用Python开发的。

自动化运维

 很多操作系统中,Python 是标准的系统组件,大多数 Linux 发行版以及 NetBSD、OpenBSD 和 Mac OS X 都集成了 Python,可以在终端下直接运行 Python。有一些 Linux 发行版的安装器使用 Python 语言编写。Python能够满足绝大部分自动化运维需求。

Python程序输出

 在Python 3.x版本中使用print语句输出。比如我们用 print 语句完成程序员们老生常谈第一个编程实例,Hello World:

print('Hello World')

我们在Python自带的IDLE中输入这条语句,然后回车就可以看到输出的内容

使用print 语句即可输出我们想要输出的语句。

另外,Python 的 print 语句,与字符串格式运算符( % )结合使用,可实现字符串替换功能,这一点和 C 语言中的 printf()函数非常相似,比如:

print('%s is number %d'%("Python",1))

 %s 表示由一个字符串来替换,而%d 表示由一个整数来替换,另外一个很常用的就是%f, 它表示由一个浮点数来替换。

Python程序输入

 Python提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘。input 可以接收一个Python表达式作为输入,并将运算结果返回。input()函数的输入值,永远会被强制性地转换为字符串类型,不管我们在终端区域输入什么,input()函数的返回值一定是字符串。如果我们想让input()函数返回其他类型就必须使用强制类型转换。比如我们输入123456:

没有使用强制类型转换之前我们使用type()函数显示输入的内容为str也就是字符串,当我们使用int()进行强制类型转换之后显示输入的内容为int也就是整型变量。

常用的数据类型转换:

注意不能直接将一个内容为浮点型数字的字符串直接转化为int类型,必须先转换为float型,再转化为int型。

Python语言的注释

 Python中的注释有单行注释和多行注释:

单行注释:
Python中单行注释以 ## 开头,例如:
## 这是一个注释
多行注释:
 多行注释用三个单引号 ''' 或者三个双引号 """ 将注释括起来,例如:
'''
这是一个多行注释,用三个单引号
这是一个多行注释,用三个单引号 
这是一个多行注释,用三个单引号
'''
print("Hello World")
"""
这是一个多行注释,用三个双引号
这是一个多行注释,用三个双引号 
这是一个多行注释,用三个双引号
"""

’’’ ‘‘‘还可以用于在函数首部书写说明

python语句

一行写一个语句

一行写多个语句:用分号间隔

多行写一个语句:用\(反斜杠)实现,每一行后面添加反斜杠

total = item_one + \
        item_two + \
        item_three

如果是[],(),{}中的内容分多行写的话,不需要加反斜杠。

多行语句:

当他们是一个整体的代码组时,使用缩进来表示关系

空行:

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函 数入口之间也用一行空行分隔,以突出函数入口的开始。

空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空 行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功 能或含义的代码,便于日后代码的维护或重构。

记住:空行也是程序代码的一部分。

Python 中的标准算术运算符

Python 中的标准算术运算符有以下几种:

 + - * / // % **

 加(+)、减(-)、乘(*)、除(/)和取余(%)都是标准运算符。Python 有两种除法运算符,单斜杠(/)用作传统除法,双斜杠(//)用作浮点除法(对结果进行四舍五入)。传统除法是指如果两个操作数都是整数的话,它将执行是地板除(取比商小的最大整数)。而浮点除法是真正的除法,不管操作数是什么类型,浮点除法总是执行真正的除法。还有一个乘方运算符,双星号(**)。

Python 标准比较运算符

  比较运算根据表达式的值的真假返回布尔值: < <= > >= == != <>

Python 目前支持两种“不等于”比较运算符, != 和 <> , 分别是 C 风格和 ABC/Pascal风格。目前后者慢慢地被淘汰了, 所以推荐使用前者。

Python 逻辑运算符:

and or not

使用逻辑运算符可以将任意表达式连接在一起,并得到一个布尔值。

python 运算符优先级(从高到低)

运算符 描述
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,求余数和取整除
+ - 加法减法
>> << 右移,左移运算符
& 位 ‘AND’
^| 位运算符
<= < > >= 比较运算符
== != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符

Python中支持的基本数字类型

Python 支持五种基本数字类型

int (有符号整数)
bool (布尔值)
float (浮点值)
complex (复数)

 注意:请不要将 Python 的长整数与 C 语言的长整数混淆。Python 的长整数所能表达的范围远远超过 C 语言的长整数,事实上,Python 长整数仅受限于用户计算机的虚拟内存总数。也就是说Python中一般不会像C语言那样出现数据溢出的情况,你可以直接用Python计算很大很大的数。

Python 3.6.x支持在数字中间位置使用单个下划线作为分隔来提高数字的可读性,类似于数学上使用逗号作为千位分隔符。

在Python数字中单个下划线可以出现在中间任意位置,但不能出现开头和结尾位置,也不能使用多个连续的下划线。

Python 中变量名规则和赋值

变量名规则

 Python的变量名由字母、数字、下划线组成。但是要注意以下几点

不能以数字开头
不能与关键字重名。关键字就是在 Python 内部已经使用的标识符
区分大小写
在定义变量时,为了保证代码格式,= 的左右应该各保留一个空格
在 Python 中,如果变量名需要由二个或多个单词组成时,可以按照以下方式命名

  • 每个单词都使用小写字母
  • 单词与单词之间使用 _下划线连接
  • 例如:first_name、last_name、qq_number、qq_password

当变量名是由二个或多个单词组成时,还可以利用驼峰命名法来命名

  • 小驼峰式命名法
    第一个单词以小写字母开始,后续单词的首字母大写 例如:firstName、lastName
  • 大驼峰式命名法
    每一个单词的首字母都采用大写字母。例如FirstName、LastName、CamelCase

注意:

  1. 变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为message_1,但不能将其命名为1_message。
  2. 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。
  3. 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print。
  4. 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。
  5. 慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。

Python的关键字

 上面我们说不要将Python关键字和函数名用作变量名。那么Python都有哪些关键字呢? 有两种方法可以查看:

使用help()方法查看,在Python编辑器中输入help(“keywords”)语句即可查看。

>>> help("keywords")

Here is a list of the Python keywords.  Enter any keyword to get more help.

False               class               from                or
None                continue            global              pass
True                def                 if                  raise
and                 del                 import              return
as                  elif                in                  try
assert              else                is                  while
async               except              lambda              with
await               finally             nonlocal            yield
break               for                 not                 

导入keyword库,然后使用keyword模块中的kwlist方法。

    >>> import keyword
    >>> keyword.kwlist
    >>> ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'eli···

https://blog.csdn.net/qq_41575507/article/details/106060204

赋值

 Python是动态类型语言, 也就是说不需要预先声明变量的类型。 变量的类型和值在赋值那一刻被初始化。变量赋值通过等号来执行。 例如:

>>>counter = 0 
>>> miles = 1000.0 
>>> name = 'Bob' 
>>> counter = counter + 1

赋值运算符

 Python语言中等号(=)是主要的赋值运算符。注意,在 Python 语言中,赋值并不是直接将一个值赋给一个变量,对象是通过引用传递的。在赋值时,不管这个对象是新创建的,还是一个已经存在的,都是将该对象的引用(并不是值)赋值给变量。

  • 增量赋值

  等号可以和一个算术运算符组合在一起, 将计算结果重新赋值给左边的变量。这被称为增量赋值, 类似下面这样的语句: x = x + 1

现在可以被写成:x += 1

增量赋值通过使用赋值运算符,将数学运算隐藏在赋值过程当中。

 当然Python也同样支持以下的几种运算符:

-= *= /= %= **= «= »= &= ^= |=

但是要特别注意:Python 不支持类似 x++ 或 –x 这样的前置/后置自增/自减运算。

  • 多重赋值

 Python支持多重赋值,比如:

>>> x = y = z = 1
>>> x
1
>>> y
1
>>> z
1

在上面的例子中,一个值为 1 的整数对象被创建,该对象的同一个引用被赋值给 x、y 和 z 。也就是`将一个对象赋给了多个变量。当然,在 Python 当中,将多个对象赋给多个变量也是可以的。

  • “多元”赋值

 将多个变量同时赋值的方法我们称为多元赋值。采用这种方式赋值时,等号两边的对象都是元组。

例如:

>>> x,y,z = 1,'python',6
>>> x
1
>>> y
'python'
>>> z
6

Python中的字符串

Python 中字符串被定义为引号之间的字符集合。Python 支持使用成对的单引号或双引号,三引号(三个连续的单引号或者双引号)可以用来包含特殊字符。使用索引运算符( [ ] )和切片运算符( [ : ] )可以得到子字符串。字符串有其特有的索引规则:第一个字符的索引是 0,最后一个字符的索引是 -1。加号( + )用于字符串连接运算,星号( * )则用于字符串重复。

在Python中,没有字符常量和变量的概念,只有字符串类型的常量和变量,单个字符也是字符串。使用单引号、双引号、三单引号、三双引号作为定界符(delimiter)来表示字符串,并且不同的定界符之间可以互相嵌套。

Python 3.x全面支持中文,中文和英文字母都作为一个字符对待,甚至可以使用中文作为变量名。

除了支持使用加号运算符连接字符串以外,Python字符串还提供了大量的方法支持格式化、查找、替换、排版等操作。

Python的列表和元组

 可以将列表和元组当成普通的“数组”,它能保存任意数量任意类型的 Python 对象。和数组一样,通过从 0 开始的数字索引访问元素,但是列表和元组可以存储不同类型的对象。

Python的字典

 字典是 Python 中的映射数据类型,工作原理类似 Perl 中的关联数组或者哈希表,由键-值(key-value)对构成。几乎所有类型的 Python 对象都可以用作键,不过一般还是以数字或者字符串最为常用。值可以是任意类型的 Python 对象,字典元素用大括号({ })包裹。

Python的代码块以及缩进

 代码块通过缩进对齐表达代码逻辑而不是使用大括号,因为没有了额外的字符,程序的可读性更高。而且缩进完全能够清楚地表达一个语句属于哪个代码块。当然,代码块也可以只有一个语句组成。在后续的学习中我们会越来越能够体会到这种通过缩进对齐表达代码逻辑所写程序的优美与简洁。缩进对于初学者其实也是一个比较困惑的地方,但是随着后续的学习,我们会越来越熟悉这种通过缩进对齐表达代码逻辑的方式。

原文链接:https://blog.csdn.net/qq_41575507/article/details/106004192

原文链接:https://blog.csdn.net/qq_41575507/java/article/details/105979773

下一页