From 0 to Python学习

本次学习选择的是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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180425G1QN6Y00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励