Python知识点笔记
优点
简单:伪代码
高层语言:无需考虑诸如如何管理你的程序使用的内存
可移植性:无需修改就可以在任何平台上运行
解释性:可直接从源代码运行程序,在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成为计算机使用的机器语言并允许。
面向对象:既支持面向过程也支持面向对象的编程
可扩展性:
丰富的库:
规范的代码:
主要运用得领域:
云计算、web计算、科学计算和人工智能、系统操作和维护、金融、图像GUI
基础语法
编码
默认情况下,源文件以UTF-8编码,所有的字符串都是Unicode字符串
标识符
第一个字符必须是字母表中的字母或者下划线
标识符的其他部分由字母、数字和下划线组成
标识符对大小写敏感
python保留字
关键字不能用作任何标识符名称
1 | import keyword |
注释
单行注释以#开头
1 | #!/usr/bin/python3 |
输出结果:
1 | Hello, Python! |
多行注释可以使用多个#号,还有‘’‘和”“”
1 | #!/usr/bin/python3 |
输出结果为:
1 | Hello, Python! |
行与缩进
使用缩进来表示代码块,不需要使用大括号{}
缩进的空格数是可变的,但同一个代码块的语句必须包含相同的缩进空格数
1 | if True: |
错误示例:
1 | if True: |
以上程序由于缩进不一致,执行后会出现类似以下错误:
1 | File "test.py", line 6 |
多行语句
通常一行写完一条语句,但如果语句很长,可以使用反斜杠来实现多条语句
1 | total = item_one + \ |
在[],{},或()中的多行语句,不需要使用反斜杠
1 | total = ['item_one', 'item_two', 'item_three', |
数字类型
四种类型:整数、布尔型、浮点数、复数
int(整数):如1。只有一种整数类型int,表示为长整型。【没有python2中的Long】
bool(布尔):如true
float(浮点数):如1.23、3E-2
complex(复数):如1+2j、1.1+2.2j
字符串
单引号和双引号使用完全相同
使用三引号(’’’或者”””)可以指定一个多行字符串
转义符‘'
反斜杠可以用来转义,使用r可以让反斜杠不发生转义
【比如:r”this is a line with \n”,则\n会显示而不是换行】
按字面意义级联字符串,如“this” “is” “string”会被自动转换为this is string
字符串可以用+运算符连接在一起,用*运算符重复
字符串有两种索引方式,从左往右以0开始,从右往左以-1开始
字符串不能改变
没有单独的字符类型,一个字符就是长度为1的字符串
字符串的汲取语法格式如下:变量[头下标:尾下标:步长]
1 | #!/usr/bin/python3 |
输出结果:
1 | Runoob |
空行
函数之间或者类的方法之间用空行分隔,表示一段新的代码开始。类和函数入口之间也需要一行空行分隔,以突出函数入口的开始。
【空行与代码缩进不同,空行并不是python语法的一部分,书写时不插入空行,python解释器运行也不会报错,但是空行的作用在于分隔两段不同功能或含义的代码,便于代码维护和重构】
【空行也是程序代码的一部分】
等待用户输入
执行下面的程序再按回车键后就会等待用户输入:
1 | #!/usr/bin/python3 |
【以上代码中:”\n\n“在结果输出前会输出两个新的空行。一旦用户按下enter键时,程序将退出】
同一行显示多条语句
可以在同一行中使用多条语句,语句之间使用分号分割
1 | #!/usr/bin/python3 |
使用脚本执行代码输出结果:
1 | runoob |
使用交互式命令行执行输出结果:
1 | import sys; x = 'runoob'; sys.stdout.write(x + '\n') |
多个语句构成代码组
缩进相同的一组语句构成一个代码块,称为代码组
像if、while、def和class这样的复合语句,首行以关键字开始,以冒号结束,该行之后的一行或者多行代码构成代码组
【将首行及后面的代码组称为一个子句(clause)】
1 | if expression : |
Print输出
默认输出是换行的,如果实现不换行需要在变量末尾加上end=””:
1 | #!/usr/bin/python3 |
输出结果:
1 | a |
import和from…import
用import和from…import来导入相应的模块
将整个模块导入,格式为:import somemodule
从某个模块中导入某个函数,格式为:from somemodule import somefunction
从某个模块中导入多个函数,格式为:from somemodule import firstfunc,secondfunc,thirdfunc
将某个模块中的全部函数导入,格式为from somemodule import *
导入sys模块示例:
1 | import sys |
导入sys模块的argv,path成员
1 | from sys import argv,path # 导入特定的成员 |
命令行参数
可以执行一些操作来查看一些基本信息,比如可以使用-h来查看各参数帮助信息
1 | $ python -h |
基本数据类型
变量不需要声明。每个变量在使用前都必须赋值。变量赋值以后该变量才会被创建。
在python中,变量就是变量,没有类型。【所说的类型是变量所指的内存中对象的类型】
示例
1 | #!/usr/bin/python3 |
输出结果:
1 | 100 |
多个变量赋值
允许同时为多个变量赋值
1 | a = b = c = 1 #创建一个整型对象,值为1,从后向前赋值,三个变量被赋予相同的数值 |
也可以为多个对象指定多个变量
1 | a, b, c = 1, 2, "runoob" #两个整型对象1和2的分配给变量a和b,字符串对象"runoob"分配给变量c |
标准数据类型(六种)
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
【不可变数据3个:Number(数字)、String(字符串)、Tuple(元组)】
【可变数据3个:List(列表)、Dictionary(字典)、Set(集合)】
内置的type()函数可以用来查询变量所指的对象类型
示例
1 | 20, 5.5, True, 4+3j a, b, c, d = |
此外还可以用isinstance来判断
1 | >>>a = 111 |
isinstance和type的区别在于:
type()不会认为子类是一种父类型
isinstance()会认为子类是一种父类型
示例
1 | class A: |
在python2中是没有布尔型的,它用数字0表示false,用1表示true。
python3中,将true和false定义成关键字了,但他们的值还是1和0,可以和数字相加。
数值运算
示例
1 | >>>5 + 4 # 加法 |
注意:
1、可同时为多个变量赋值。如a,b = 1,2
2、一个变量可以通过赋值指向不同类型的对象
3、数值的除法包含两个运算符:/返回一个浮点数;//返回一个整数
4、在混合计算时,Python会把整型转换成浮点数。
List(列表)
列表可以完成大多数集合的数据结构实现。列表中元素的类型可以不相同,支持数字、字符串甚至包含列表(所谓嵌套)。
列表是写在方括号之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
语法格式:
1 | 变量[头下标:尾下标] |
加号+是列表连接运算符,星号*是重复操作。
示例
1 | #!/usr/bin/python3 |
输出结果
1 | ['abcd', 786, 2.23, 'runoob', 70.2] |
列表中元素是可以改变的
1 | >>>a = [1, 2, 3, 4, 5, 6] |
列表截取可以接收第三个参数,参数作用是截取的步长。
1 | >>>letters = ['c','h','e','c','k','i','o'] |
如果第三个参数为负数表示逆向读取,以下示例用于翻转字符串
1 | def reverseWords(input): |
输出结果
1 | runoob like I |
元组的元素不能修改,元组写在小括号内,元素之间用逗号隔开,元组中的元素类型也可以不相同。
1 | #!/usr/bin/python3 |
输出结果
1 | ('abcd', 786, 2.23, 'runoob', 70.2) |
元组与字符串类似,可以被索引且下标索引从0开始,-1从末尾开始。也可以进行截取
【可以把字符串看成一种特殊的元组】
1 | >>>tup = (1, 2, 3, 4, 5, 6) |
虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表
【构造包含0个或1个元素的元组比较特殊,所以会有一些额外的语法规则】
1 | tup1 = () # 空元组 |
string、list和tuple都属于sequence(序列)
Set(集合)
集合是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
基本功能是进行成员关系测试和删除重复元素
可以使用大括号{}或者set()函数创建集合
【创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字典】
创建格式
1 | parame = {value01,value02,...} |
示例
1 | #!/usr/bin/python3 |
输出结果:
1 | {'Mary', 'Jim', 'Rose', 'Jack', 'Tom'} |
Dictionary(字典)
字典是内置数据类型
列表是有序的对象集合,字典是无序的对象集合。
【区别在于:字典当中的元素是通过键来获取的,而不是通过偏移获取】
字典是一种映射类型,字典用{}标识,它是一个无序的key:value的集合
key必须使用不可变类型
在同一个字典中,key必须是唯一的
1 | #!/usr/bin/python3 |
输出结果:
1 | 1 - 教程 |
构造函数dict()可以直接从键值对序列中构建字典如下:
1 | >>>dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)]) |
字典类型也有一些内置的函数,例如clear()、keys()、values()等
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) | 将一个整数转换为一个字符 |
ord(x) | 将一个字符转换为它的整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |