目录
1. python优缺点
优点 | 缺点 | 解决方法 |
语法简单,使用缩进区分代码块 | 速度慢 | 需要高效率的地方嵌套其他语言 |
工具包多 | 是伪多线程 | 适用于io密集任务 |
开源、面向对象的高级语言 | 维护困难 | 遵循规则编程PEP8 |
动态解释性强 | ||
拓展性强可调用其他语言 | ||
支持函数式编程 |
2.基础语法规则
2.1 标识符
定义:用来标识某个实体的符号,给变量、函数、语句块、对象等命名。
命名规则:-字母、数字、下划线组成
-不能数字开头
-不能和关键字重名
2.2 关键字
定义:已经定义好的,具有特殊功能的标识符
获取关键字:
2.3 变量
python中的变量是对数据储存地址的引用,分为局部和全局两种变量。
局部变量 | 定义在函数内的变量,作用范围只能是函数内部 |
全局变量 | 定义在函数、对象外部,作用范围是整个模块 |
数据在计算机上储存会得到一个储存地址,给变量赋值就是将变量指向了数据所在的地址,而不是将数据赋予变量。
命名规则:1、匈牙利命名法:开头字母用变量类型的缩写且要大写;其余部分用变量的英文/英文缩写。
2、驼峰命名法:混合使用大小写字母来构成变量和函数的名字;第一个单词小写字母开头,第2个字母的首字母大写;每个单词首字母大写
python中程序自上而下的执行,使用变量之前要先定义再使用
a=1 a=1
c=a+b × b=1 √
b=1 c=a+b
2.4 注释
注释:对代码进行解释说明,利于他人看懂和维护。在执行过程中注释会被忽视。
-单行注释 # :A=10 #这是一个数值类型变量
-多行注释: """......"""、'''.....'''
2.5 PEP8
常用PEP8规范 |
和语法相关的缩进用4个空格表示 |
函数和类的定义,代码前后都要用两个空格进行分隔 |
二元运算符的左右两侧应该保留一个空格,且只要一个空格 |
变量、函数和属性应该使用小写字母来拼写,如有多个单词就用下划线进行连接 |
模块级别的常量,应该采用全大写字母,如果有多个单词就用下划线进行连接 |
2.6 基础函数
输入 | print(),可用end指定结尾符号(默认换行) | |
输出 | input | 接受键盘输入 |
查看帮助信息 | help | help() |
查看对象的属性和方法 | dir | dir() |
2.7 引入工具包
import package
from xx import package
import package as pk
3. 数据类型
3.1 用来存放数据的容器
Python内置了6种数据类型,Numbur(数值)、String(字符串)、List(列表)、Tuple(元组)、Dictionnary(字典)、Set(集合)
分类:
有序 | 可用下表(索引)访问元素 |
无序 | 不可用下表访问元素 |
可变 | 可以被修改 |
不可变 | 不可以被修改 |
结构分类:
有序 | 无序 | |
可变 | 列表 | 字典、集合 |
不可变 | 字符串、元组 | 数值 |
3.2 Number
3.2.1 Python3.x
类型 | 值 | 范围 |
int | 1,2 | (-∞,+∞) |
float | 1.2,1.3E-2 | (-∞,+∞) |
bool | True | [True,Flase] |
complex | x+ij | x是实部,yj是虚数部分 |
3.2.2 数值的基本计算
加+、减-、乘*、除/、取余/取整(%、//)、乘方**
如果不同类型的数字进行运算,结果类型是精度比较高的那个类型。(int,float结果为float类型)
3.2.3 python中内置的计算函数
-abs(x),求绝对值
-round(x),四舍五入
-divmod(x,y),返回两个数值的商和余数
-max/min,求最大值/最小值
-sum,求和
3.2.4 math模块
Python math模块提供了很多对float的数学运算函数。
-还有一个cmath模块,函数基本和math一致,区别是cmath运算的是复数。
math模块常用方法:
-三角函数:sin/cos/tanh
-获得绝对值:fabs
-向上取整:ceil,向下取整:floor
-获取阶乘:factorial
-x的y次方:pow
3.3字符串(String)
3.3.1 定义及特征
字符指类自行单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。(有序不可变)
字符串特征:-有限字符的集合,是由一个多字符组成的序列
-可由汉字、字母、数字、符号组成
-一般由引号包裹
此外,python中没有字符,字符的个数即为字符串的长度,最小的长度的字符串是1,可用len函数查看。
3.3.2 创建一个字符串
- ('xxx') 不能换行
- ("xxx") 不能换行
- ('''xxx''','''aaa''') 可以换行
另外还可以通过类型转换的方式——str(obj),来生成字符串。
3.3.3 特殊的字符串
转义字符:\
-屏蔽符号原有的功能
-加入特殊字母有特殊功能
-"\\"输出\
常见的字母搭配
符号 | 作用 |
\n | 换行 |
\t | 水平制表(HT),(跳到下一个Tab位置) |
\\ | 输出\ |
\0 | 空字符NUL |
\v | 垂直制表(VT) |
\r | 回车 |
\f | 换页 |
若不希望字符串中的 \ 进行转义使用原始字符串,可在前面加r/R实现
3.3.4 字符串的运算
"+":拼接两个字符串,a="hello",b="world" a+b="helloworld"
"*":字符串乘以一个数字可以得到重复次数的新的字符串 "a"*2=aa
3.3.5 索引与切片
字符串是一个有序序列,故我们可以通过字符串中某些元素对应的下标(索引)来访问:str[n],正向访问时下表从0开始,到字符串长度减1。逆向访问时从-1开始,每次递减1。
切片:str[a:b:c],a是起始元素,b是终止元素的位置,c是步长。可用于所有有序的序列中
-abc均可为负值
-a为0,b为n,c为1时,可省略不写:str[::](表示取所有),str[::2](每两个取一个)
3.3.6 字符串常用操作
此外 python还提供了字符串操作模块string,和字符串内置的方法相似度较高。
3.4 元组
3.4.1 简介与创建
-元组由一个小括号包裹,元素用逗号隔开。
-元组是一个有序不可变的序列,其中的元素可以是任意对象。(可索引和切片)
-数据一旦生产就无法更改(其储存的数据更加安全)
-创建
- Tuple = tuple((obj1,obj2,obj3...)) 其他数列转化为元组
- Tuple = (obj1,obj2,...)
- Tuple = obj1,obj2,obj3
若声明的元组只有一个元素也需要在元素后面加上逗号,告诉解释器这不是运算符号中的括号。
嵌套元组中也是如此。
3.4.2 元组的运算
+:拼接两个元组
*:元组乘以一个数得到重复次数的元组
3.5 列标
3.5.1 List(列表)
-列表是一个有序可变的序列,其中的元素可以是任意对象。
特点:
- 可使用索引和切片
- 可随意修改
- 对比元组而言,安全较差,但灵活性高
- 支持的运算符同元组一样
3.5.2 列表的创建方式
列表由一个中括号包裹住元素,元素用逗号隔开。
创建方式:
- List = list((obj1,obj2,...)) #可以通过此方法将其他序列转为列表
- List = [obj1,obj2,...]
- 列表推导式
[i for i in range(5)]
[i for i in range(5) if i%2] [2*i for i in range(5) if i%2]
[(x,y) for x in range(5) if x%2 ==0 for y in range(5) if y%2 ==1]
3.5.3 列表的常用操作
3.5.4 列表与数组
列表与数组是两种结构,python本身无数组,需借助numpy工具包实现。
3.6 字典Dictionary
3.6.1 字典
字典的元素由两部分构成 -键和值,故字典又称键值对。
-键是唯一不可变的
如果有相同的键,则后面的键对应的值会覆盖前面的值
数据量大时,字典访问速度比列表快
字典是无序可变的序列
3.6.2 创建字典
- Dict = {key:value,}
- Dict = dict(key=value,)
- Dict = dict([key,value,])
- 字典推导式
字典的取值:通过键来取值
3.6.3 字典常用操作
3.7 集合Set
3.7.1 集合
集合中的元素是唯一的,重复的元素会被删除。
集合是{}包裹,内部元素用“,”隔开。
3.7.2 声明一个集合
Set = set()
Set = {obj1,obj2,...}
3.7.3 集合的运算
逻辑运算:
交集set1 & set2:两个集合相同的元素。
对称差集set1 ^ set2:两个集合中不同的元素。
并集set1| set2:两个交集内总共的元素。(重复的会被删除)
差集set1 -set2:集合1包含而集合2不包含的元素。
3.7.4 集合的常用操作
对一个列表除重:
列表([1,2,3,1,2,1,3])
l = ([1,2,3,1,2,1,3])
l = set(l)
l = list(l)
print(l)
#输出:[1,2,3]