Python(计算机程序设计语言)(百度一下)

  (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。

  Python是纯粹的自由软件, 源代码解释器CPython遵循 GPL(GNU General Public License)协议[2]

  Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中[3]  有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

7月20日,IEEE发布2017年编程语言排行榜:Python高居首位[4]

 

  Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。互联网公司广泛使用Python来做的事一般有:自动化运维自动化测试大数据分析、爬虫、Web 等。


 

  本人学Python的目的是为了完成毕业设计 ^_^

 

解释器

  Python是一门跨平台的脚本语言,Python规定了一个Python语法规则,实现了Python语法的解释程序就成为了Python的解释器

  CPython(ClassicPython,也就是原始的Python实现,需要区别于其他实现的时候才以CPython称呼;或解作C语言实现的Python)。这是最常用的Python版本。

       Jython(原名JPython;Java语言实现的Python,现已正式发布)。Jython可以直接调用Java的各种函数库。

       PyPy(使用Python语言写的Python)

       IronPython(面向.NET和ECMA CLI的Python实现)。IronPython能够直接调用.net平台的各种函数库。可以将Python程序编译成.net程序。

  ZhPy(周蟒)(支持使用繁/简中文语句编写程序的Python语言)

 

Python3.x基础

一.字符编码

1. 字符串

  以Unicode编码的,也就是说,Python的字符串支持多语言

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Autor:xiazichao

print("中文str")
#output:中文str

单个字符的编码,Python3.x提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Autor:xiazichao

print(ord("A"))
#output:65
print(ord("中"))
#output:20013
print(chr(65))
#output:A
print(chr(20013))
#output:中

如果果知道字符的整数编码,还可以用十六进制这么写str

'\u4e2d\u6587'  # 中文

2. byte

  由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes

  Python对bytes类型的数据用带b前缀的单引号或双引号表示:

x = b'ABC'

  要注意区分'ABC'和b'ABC',前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。 

  以Unicode表示的str通过encode()方法可以编码为指定的bytes,例如:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Autor:xiazichao

print('ABC'.encode('ascii'))
#output:b'ABC'
print('ABC'.encode('utf-8'))
#output:b'ABC'
print('中文'.encode('utf-8'))
#output:b'ABC'
print('中文'.encode('ascii'))
#output:b'\xe4\xb8\xad\xe6\x96\x87'
#print('中文'.encode('ascii'))
#UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

  纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。

  在bytes中,无法显示为ASCII字符的字节,用\x##显示。

  反之,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Autor:xiazichao

print(b'ABC'.decode('ascii'))
#output:ABC
print(b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8'))
#output:中文

  1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。

二.注释

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

# 开头,例如:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Autor:xiazichao

''' 或者三个双引号 """ 将注释括起来,例如:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Autor:xiazichao

'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号 
这是多行注释,用三个单引号
'''

"""
这是多行注释,用三个单引号
这是多行注释,用三个单引号 
这是多行注释,用三个单引号
"""

三.运算符

  •   1.算术运算符

运算符

描述

实例

+

加 - 两个对象相加

a + b 输出结果 31

-

减 - 得到负数或是一个数减去另一个数

a - b 输出结果 -11

*

乘 - 两个数相乘或是返回一个被重复若干次的字符串

a * b 输出结果 210

/

除 - x 除以 y

b / a 输出结果 2.1

%

取模 - 返回除法的余数

b % a 输出结果 1

**

- 返回xy次幂

a**b 1021次方

//

取整除 - 返回商的整数部分

9//2 输出结果 4 , 9.0//2.0 输出结果 4.0

 

  •   2.比较运算符

运算符

描述

实例

==

等于 - 比较对象是否相等

(a == b) 返回 False。

!=

不等于 - 比较两个对象是否不相等

(a != b) 返回 True。

大于 - 返回x是否大于y

(a > b) 返回 False。

小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。

(a < b) 返回 True。

>=

大于等于 - 返回x是否大于等于y。

(a >= b) 返回 False。

<=

小于等于 - 返回x是否小于等于y。

(a <= b) 返回 True。

 

  •   3.赋值运算符

运算符

描述

实例

=

简单的赋值运算符

c = a + b 将 a + b 的运算结果赋值为 c

+=

加法赋值运算符

c += a 等效于 c = c + a

-=

减法赋值运算符

c -= a 等效于 c = c - a

*=

乘法赋值运算符

c *= a 等效于 c = c * a

/=

除法赋值运算符

c /= a 等效于 c = c / a

%=

取模赋值运算符

c %= a 等效于 c = c % a

**=

幂赋值运算符

c **= a 等效于 c = c ** a

//=

取整除赋值运算符

c //= a 等效于 c = c // a

 

  •   4.Python位运算符

运算符

描述

实例

&

按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0

(a & b) 输出结果 12 ,二进制解释: 0000 1100

|

按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。

(a | b) 输出结果 61 ,二进制解释: 0011 1101

^

按位异或运算符:当两对应的二进位相异时,结果为1

(a ^ b) 输出结果 49 ,二进制解释: 0011 0001

~

按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1

(~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。

<< 

左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。

a << 2 输出结果 240 ,二进制解释: 1111 0000

>> 

右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数

a >> 2 输出结果 15 ,二进制解释: 0000 1111

 

  •   5.Python逻辑运算符

and

x and y

布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。

(a and b) 返回 20。

or

x or y

布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。

(a or b) 返回 10。

not

not x

布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

not(a and b) 返回 False

 

  •  6.Python成员运算符

运算符

描述

实例

in

如果在指定的序列中找到值返回 True,否则返回 False。

x 在 y 序列中 , 如果 x 在 y 序列中返回 True。

not in

如果在指定的序列中没有找到值返回 True,否则返回 False。

x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

 

  • 7.Python身份运算符

运算符

描述

实例

is

is 是判断两个标识符是不是引用自一个对象

x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False

is not

is not 是判断两个标识符是不是引用自不同对象

x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

 

四.标准数据类型

  Python3 中有六个标准的数据类型:

  • Number(数字):支持 int、float、bool、complex(复数)。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Autor:xiazichao

a, b, c, d = 20, 5.5, True, 4+3j
print(type(a), type(b), type(c), type(d))
#output:<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
  • String(字符串):上面提到了
  • List(列表):List(列表) 是 Python 中使用最频繁的数据类型。

  列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。

  列表是写在方括号([])之间、用逗号分隔开的元素列表。

  和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

  列表截取的语法格式如下:

变量[头下标:尾下标]
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Autor:xiazichao

list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
tinylist = [123, 'runoob']
 
print (list)            # 输出完整列表
#output:['abcd', 786, 2.23, 'runoob', 70.2]
print (list[0])         # 输出列表第一个元素
#output:abcd
print (list[1:3])       # 从第二个开始输出到第三个元素
#output:[786, 2.23]
print (list[2:])        # 输出从第三个元素开始的所有元素
#output:[2.23, 'runoob', 70.2]
print (tinylist * 2)    # 输出两次列表
#output:[123, 'runoob', 123, 'runoob']
print (list + tinylist) # 连接列表
#output:['abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob']

List内置了有很多方法,例如append()、pop()等等,这在后面会讲到。

注意:

  • 1、List写在方括号之间,元素用逗号隔开。
  • 2、和字符串一样,list可以被索引和切片。
  • 3、List可以使用+操作符进行拼接。
  • 4、List中的元素是可以改变的。
  • Tuple(元组):元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号(())里,元素之间用逗号隔开。

string、list和tuple都属于sequence(序列)。

注意:

  • 1、与字符串一样,元组的元素不能修改。
  • 2、元组也可以被索引和切片,方法一样。
  • 3、注意构造包含0或1个元素的元组的特殊语法规则。
  • 4、元组也可以使用+操作符进行拼接。
  • Sets(集合):集合(set)是一个无序不重复元素的序列。

基本功能是进行成员关系测试和删除重复元素。

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用{ },因为 { } 是用来创建一个空字典。

创建格式:

  • parame ={value01,value02,...}或者set(value)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Autor:xiazichao

student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
print(student)  # 输出集合,重复的元素被自动去掉
#output:{'Rose', 'Mary', 'Jack', 'Tom', 'Jim'}

# 成员测试
if ('Rose' in student):
    print('Rose 在集合中')
else:
    print('Rose 不在集合中')
#output:Rose 在集合中

# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')

print(a)
#output:{'d', 'b', 'c', 'a', 'r'}
print(a - b)  # a和b的差集
#output:{'d', 'b', 'r'}
print(a | b)  # a和b的并集
#output:{'l', 'm', 'b', 'c', 'd', 'a', 'r', 'z'}
print(a & b)  # a和b的交集
#output:{'c', 'a'}
print(a ^ b)  # a和b中不同时存在的元素
#output:{'l', 'm', 'b', 'd', 'z', 'r'}
  • Dictionary(字典):字典(dictionary)是Python中另一个非常有用的内置数据类型。

列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合。

键(key)必须使用不可变类型。

在同一个字典中,键(key)必须是唯一的。

dict = {}
dict['one'] = "1 - 菜鸟教程"
dict[2] = "2 - 菜鸟工具"

tinydict = {'name': 'xzc', 'code': 1, 'site': ''}

print(dict['one'])  # 输出键为 'one' 的值
#output:1 - 菜鸟教程
print(dict[2])  # 输出键为 2 的值
#output:2 - 菜鸟工具
print(tinydict)  # 输出完整的字典
#output:{'name': 'xzc', 'code': 1, 'site': ''}
print(tinydict.keys())  # 输出所有键
#output:dict_keys(['name', 'code', 'site'])
print(tinydict.values())  # 输出所有值
#output:dict_values(['xzc', 1, ''])

Python数据类型转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。

函数

描述

int(x [,base])

将x转换为一个整数

float(x)

将x转换到一个浮点数

complex(real [,imag])

创建一个复数

str(x)

将对象 x 转换为字符串

repr(x)

将对象 x 转换为表达式字符串

eval(str)

用来计算在字符串中的有效Python表达式,并返回一个对象

tuple(s)

将序列 s 转换为一个元组

list(s)

将序列 s 转换为一个列表

set(s)

转换为可变集合

dict(d)

创建一个字典。d 必须是一个序列 (key,value)元组。

frozenset(s)

转换为不可变集合

chr(x)

将一个整数转换为一个字符

unichr(x)

将一个整数转换为Unicode字符

ord(x)

将一个字符转换为它的整数值

hex(x)

将一个整数转换为一个十六进制字符串

oct(x)

将一个整数转换为一个八进制字符串