本文仅是个人学习摘录所用,摘录自菜鸟教程
1.基础语法
1.1编码
默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。也可以为源码文件指定不同的编码:
# -*- coding: cp-1252 -*-
1.2多行语句、多个变量赋值
可以使用反斜杠()来实现多行语句,在 [], {}, 或 () 中的多行语句,不需要使用反斜杠()
a = 1+\
2+\
3
a = b = c = 1
a, b, c = 1, 2, "cat"
1.3标准数据类型
Python3 的六个标准数据类型中:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)
1.4传递引用
在变量保存可变数据类型的值时,例如列表或字典,python变量就使用引用,引用是一个值,指向内存存储的数据,对于不可变的数据类型的值,python变量就保存值本身。
1.5基本操作符
1、数学操作符
符号 | 求值 |
---|---|
2**3 | 8 |
22%8 | 6 |
22//8 | 2 |
22/8 | 2.75 |
3*5 | 15 |
+ | |
- |
优先级:
- **(先求值)
- *、/、//、%(再求值,从左到右)
- +、-(最后求值,从左到右)
2、字符串连接和复制
- ‘Alice’ + ‘Bob’——‘AliceBob’
- ‘Alice’ * 5——‘AliceAliceAliceAliceAlice’
3、布尔值、比较操作符、布尔操作符
- 布尔值:True、False
- 比较操作符:== 等于 != 不等于 <小于 >大于 <=小于等于 >=大于等于。
比较操作符根据提供的值,求值为True或False - 布尔操作符:and、or、not
- 优先级:not——and——or
- 0、0.0、’’(空字符串)在条件中,也会被认为是False,其他被认为是True
4、赋值操作符
=、+=、-=、*=、/=、%= 、**=、//=、:=
+=:可完成字符串和列表的连接
*=:可完成字符串和列表的复制
:= ( 海象运算符,可在表达式内部为变量赋值)
5、位运算符
按位运算符是把数字看作二进制来进行计算的
运算符 | 描述 |
---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 |
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 |
>> | 右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数 |
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0
c = a & b; # 12 = 0000 1100
print ("1 - c 的值为:", c)
1 - c 的值为: 12
c = a | b; # 61 = 0011 1101
print ("2 - c 的值为:", c)
2 - c 的值为: 61
c = a ^ b; # 49 = 0011 0001
print ("3 - c 的值为:", c)
3 - c 的值为: 49
c = ~a; # -61 = 1100 0011
print ("4 - c 的值为:", c)
4 - c 的值为: -61
c = a << 2; # 240 = 1111 0000
print ("5 - c 的值为:", c)
5 - c 的值为: 240
c = a >> 2; # 15 = 0000 1111
print ("6 - c 的值为:", c)
6 - c 的值为: 15
6、成员运算符
in : 如果在指定的序列中找到值返回 True,否则返回 False
not in : 如果在指定的序列中没有找到值返回 True,否则返回 False
6、身份运算符
is : 判断两个标识符是不是引用自一个对象,如果引用的是同一个对象则返回 True,否则返回 False
is not : 判断两个标识符是不是引用自不同对象,如果引用的不是同一个对象则返回结果 True,否则返回 False。
1.6基本函数/语句
1、type() 函数可以用来查询变量所指的对象类型
2、del语句删除一些对象引用,单个或多个对象
del var_a, var_b
del var1[,var2[,var3[....,varN]]]
3、数据类型转换传入其他数据类型,得到相应类型的值
函数 | 属性 |
---|---|
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) | 将一个整数转换为一个八进制字符串 |
4、len()接受一个字符串/列表/元组/字典,求字符串中字符/列表元素/元组元素/字典键值对的数目
5、elif语句:顺序很重,执行一次True,后面的elif语句不再执行
6、break、continue语句:break跳出循环,continue回到循环开始处,重新对循环条件求值
7、range():range(10, -1, -1)第一个参数是开始的值,第二个参数是上限,但不包含它,第三个是增加的值,可以是正数,也可以是负数,返回值是序列值(类似列表)
8、print():关键字end、sep
如果字典本身包含嵌套的列表或字典,导入pprint模块,使用pprint()和pformat()函数,会比print()输出结果更干净,pprint()显示在屏幕,pformat()用于保存为文本的字符串
print('Hello', end='')
print('World')
>HelloWorld
print('cats', 'dogs', 'mice')
>cats dogs mice
print('cats', 'dogs', 'mice', sep=',')
>cats,dogs,mice
9、global语句:在函数中,使用“global+全局变量”,将会创建全局变量,而不是创建局部变量
10、try, except语句:若执行try出错ZeroDivisionError,执行except,否只执行try
try:
print(spam[2])
except ZeroDivisionError:
print('Error:Invalid argument.')
2.Set(集合)
可以使用大括号 { } 或者 set() 函数创建集合
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
基本功能是进行成员关系测试和删除重复元素。
sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}
print(sites) # 输出集合,重复的元素被自动去掉
# 成员测试
if 'Runoob' in sites :
print('Runoob 在集合中')
else :
print('Runoob 不在集合中')
# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a)
{'d', 'b', 'c', 'r', 'a'}
print(b)
{'c', 'z', 'l', 'm', 'a'}
print(a - b) # a 和 b 的差集
{'r', 'b', 'd'}
print(a | b) # a 和 b 的并集
{'b', 'c', 'a', 'z', 'm', 'r', 'l', 'd'}
print(a & b) # a 和 b 的交集
{'c', 'a'}
print(a ^ b) # a 和 b 中不同时存在的元素
{'z', 'b', 'm', 'r', 'l', 'd'}
3.数字数据类型
- 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。
- Python支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型。
1. 数学函数
- 内置函数及math模块
函数 | 返回值 ( 描述 ) |
---|---|
abs(x) | 返回数字的绝对值,如abs(-10) 返回 10 |
ceil(x) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 |
(x>y)-(x<y) | 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 |
exp(x) | 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 |
fabs(x) | 返回数字的绝对值,如math.fabs(-10) 返回10.0 |
floor(x) | 返回数字的下舍整数,如math.floor(4.9)返回 4 |
log(x) | 返回指数,如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
log10(x) | 返回以10为基数的x的对数,如math.log10(100)返回 2.0 |
max(x1, x2,…) | 返回给定参数的最大值,参数可以为序列。 |
min(x1, x2,…) | 返回给定参数的最小值,参数可以为序列。 |
modf(x) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 |
pow(x, y) | x**y 运算后的值。 |
round(x [,n]) | 返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。四舍六入,应注意尾数为5的数值,保留值将保留到离上一位更近的一端 |
sqrt(x) | 返回数字x的平方根。math.sqrt() |
round(2.675, 2) 的结果,不论我们从python2还是3来看,结果都应该是2.68的,结果它偏偏是2.67。在机器中浮点数不一定能精确表达(2.67499999…),因为换算成一串1和0后可能是无限位数的,机器已经做出了截断处理。那么在机器中保存的2.675这个数字就比实际数字要小那么一点点。这一点点就导致了它离2.67要更近一点点,所以保留两位小数时就近似到了2.67。
除非对精确度没什么要求,否则尽量避开用round()函数。近似计算我们还有其他的选择:
- 使用math模块中的一些函数,比如math.ceiling(天花板除法)。
- python自带整除,python2中是/,3中是//,还有div函数。 字符串格式化可以做截断使用,例如 “%.2f” % value(保留两位小数并变成字符串……如果还想用浮点数请披上float()的外衣)。
- 当然,对浮点数精度要求如果很高的话,请用decimal模块。
2. 随机数函数
- random模块
函数 | 描述 |
---|---|
choice(seq) | 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。 |
randrange ([start,] stop [,step]) | 从指定范围内,stop不包含在范围内,按指定基数step递增的集合中获取一个随机数,基数默认值为 1 |
random() | 随机生成下一个实数,它在[0,1)范围内。 |
seed([x]) | 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。 |
shuffle(lst) | 将序列的所有元素随机排序 |
uniform(x, y) | 随机生成下一个实数,它在[x,y]范围内。 |
3. 三角函数
- random模块
函数 | 描述 |
---|---|
acos(x) | 返回x的反余弦弧度值。 |
asin(x) | 返回x的反正弦弧度值。 |
atan(x) | 返回x的反正切弧度值。 |
atan2(y, x) | 返回给定的 X 及 Y 坐标值的反正切值。 |
cos(x) | 返回x的弧度的余弦值。 |
hypot(x, y) | 返回欧几里德范数 sqrt(xx + yy)。 |
sin(x) | 返回的x弧度的正弦值。 |
tan(x) | 返回x弧度的正切值。 |
degrees(x) | 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0 |
radians(x) | 将角度转换为弧度 |
4. 数学常量
pi :数学常量 pi(圆周率,一般以π来表示)
e :数学常量 e,e即自然常数(自然常数)。