本次学习选择的是Python3,单也会偶尔涉及一些Python2,使用Pycharm或者默认的解释器。
今天主要学习Python的知识点:
-- 运算符
-- 进制
a.运算符
什么是运算符?
举个简单的例子 4 +5 = 9 。 例子中,4 和 5 被称为操作数,"+" 称为运算符。
什么是表达式?
1+23 就是一个表达式,这里的加号和乘号叫做运算符,1、2、3叫做操作数。1+23 经过计算后得到的结果是7,就1+23 = 7。我们可以将计算结果保存在一个变量里,ret = 1-23 。 所以表达式就是由操作数和运算符组成的一句代码或语句,表达式可以求值,可以放在“=”的右边,用来给变量赋值。
Python运算符分类:
获取的结果是值:算术运算符 + 赋值运算符 + 位运算符
获取的结果是布尔值: 比较运算符 + 逻辑运算符 + 成员运算符 + 身份运算符
1,算术运算符
整数除整数,只能得出整数。如果要得到小数部分,把其中一个数改成浮点数即可
在Python2.7中,除法默认是取整的,如9/2=4,而不是4.5,如果需要返回结果是4.5,需要在代码中调用division模块(from __future__import division)或者使用浮点数。
2,赋值运算符
3,位运算符
按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:
下表中变量 a 为 60,b 为 13,二进制格式如下:
a = 0011 1100
b = 0000 1101
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
注意取反运算符:
计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。
正整数的补码是其二进制表示,与原码相同 。
负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1。
-61的补码是+61(0011 1101)取反后再+1,为(1100 0010)+(0000 0001)=(1100 0011),也就是计算机中-61是用(1100 0011)来存储的,(1100 0011) 按位取反得到(0011 1100)这就是答案60
记住一句话:~x 类似于 -x-1
4,比较运算符
5,逻辑运算符
and表示条件都为真才为真,否则为假
or表示条件一个为真就为真,都为假才为假
优先级:not > or> and
推荐使用括号进行优先级计算
短路原则:
表达式从左至右运算,若 or 的左侧逻辑值为 True ,则短路 or 后所有的表达式(不管是 and 还是 or),直接输出 or 左侧表达式 。
表达式从左至右运算,若 and 的左侧逻辑值为 False ,则短路其后所有 and 表达式,直到有 or 出现,输出 and 左侧表达式到 or 的左侧,参与接下来的逻辑运算。
若 or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑。
6,成员运算符
注意粒度问题,上例中,只有一个字符串,粒度可以精确到一个字母
而下例中是个字符串列表,粒度最小精度是一个字符串,而不能是单个字母
7,身份运算符
可以使用id()函数来获取对象的内存地址
Python的内存地址优化机制:小数字池,小数字 -5 ~ 257 的内存地址是一样的。
is 与 == 的区别:
is 用于判断两个变量引用的对象是否为同一个,id()函数获取的内存地址一样
== 用于判断两个变量引用的对象的值是否相等,id()函数获取的内存地址可以不一样,但值要相同。
8,运算符优先级
注,Python中不支持一元加号和减号
b,进制
进制就是进位计数,表示逢多少进一位。如十进制表示逢十进一,二进制表示逢二进一,依此类推。人类天然选择十进制。
Python中常用的进制有十进制,二进制,八进制,十六进制。
二进制0b:0 1
八进制0o:0 1 2 3 4 5 6 7
十进制:0 1 2 3 4 5 6 7 8 9
十六进制0x:0 1 2 3 4 5 6 7 8 9 a b c d e f
进制转换:
十进制转二进制,八进制,十六进制
除法求余,相应的十进制数除以2/8/16,对应的余数反向排序就是转换后的进制数。
Python中提供一些内置函数来实现进制之间的转换:
bin() 八,十,十六进制转二进制 0b;
注意输入的数字除了十进制数外,八和十六进制的数必须加上0o和0x
oct() 二,十,十六进制转八进制 0o
注意输入的数字除了十进制数外,二和十六进制的数必须加上0b和0x
int() 二,八,十六进制转十进制
有两个参数,第一个参数x表示要转换的数字,
数值前面使用0b,0o,0x来表示对应数的进制,可以不使用引号,但不能使用第二个参数;也可以使用引号引起来但必须跟上第二个参数base,使用引号可以不用进制符0b,0o,0x
第二个参数base表示要转换的数字的进制数,
base=2表示前面的数是二进制,
base=10表示前面的数是十进制,
base=8表示前面的数是八进制,
base=16表示前面的数是十六进制
如果有第二个参数base,前面的参数x代表的数一定要用引号引起来,否则报错
hex() 二,八,十进制转十六进制 0x
注意输入的数字除了十进制数外,二和八进制的数必须加上0b和0o
领取专属 10元无门槛券
私享最新 技术干货