天池龙珠计划-python复习笔记(上)
逻辑运算符:and、or、not
位运算符:~取反(符号位也取反)、&、|或,^按位异或(满足交换律和结合律,符号位参与)、<<,>>(符号位不参与)
二进制码 bin(x)
位运算:计算机内部使用补码来表示
注意!!Python中bin一个负数(十进制表示),输出的是它的原码的二进制表示加上个负号
Python中的整型是补码形式存储的
Python中整型是不限制长度的不会超范围溢出
为了获得负数(十进制表示)的补码,需要手动将其和十六进制数0xffffffff进行按位与操作,再交给bin()进行输出,得到的才是负数的补码表示。
^ 快速交换两个整数
a ^= b
b ^= a
a ^= b
(其中原理:相同数之间取 ^ ,则变为全0,任何数与0进行 ^ 都不变)通过a&(-a)快速获取a的最后为1位置的整数(原理,因为负数是补码运算,其中原码到补码涉及到加1操作)
00 00 11 10 -> 14
&
11 11 00 10 -> -14
—)
00 00 00 10 -> 2
00 00 01 01 -> 5
&
11 11 10 11 -> -5
—)
00 00 00 01 -> 1
利用位运算实现整数整合
一个数的二进制表示可以看作是一个集合(0表示不在集合中,1表示在集合中)
比如(1,3,4,8),可以表示成01 00 01 10 10
元素与集合的操作:
(1)a | (1< 把 i 插入到集合中
(2)a & ~(1< 把 i 从集合中删除
(3)a & (1< 判断 i 是否属于该集合(零不属于,非零属于)
集合之间的操作:
a 补 -> ~a
a 交 b -> a & b
a 并 b -> a | b
a 差 b -> a & (~b)
三元运算符(一句使用)samll = x if x < y else y
其他运算符:in存在、not in不存在、is是、is not不是
注:is,is not对比的是两个变量的内存地址;而==,!=对比的是两个变量的值
比较的两个变量,指向的都是地址不可变的类型(str等),那么以上两个完全等价
若指向的是地址可变的类型(list,dict,tuple等),两者有区别
python变量名是大小写敏感
python里面万物都是对象object,整型也不例外,只要是对象,就有相应的属性attributes和方法methods
dir(x):可以查询x的属性和方法
控制浮点型的小数点后位数:
使1/3保留3位,用getcontext().prec来调整精度:
import decimal
from decimal import Decimal
decimal.getcontext().prec = 4
c = Decimal(1) / Decimal(3) # c=0.3333
bool(X):其中X可以是基本类型(整型、浮点型、布尔型),容器类型(字符串、元组、列表、字典和集合)
作用在基本类型:只要X不是整型0、浮点型0.0,结果就是True,其余就是False
作用在容器类型:X只要不是空的变量,就是True,其余是False
isinstance(x1, x2):会认为子类是一种父类类型,考虑到继承关系(如果考虑两个类型是否相同推荐此)
type():不会认为子类时一种父类类型,不考虑继承关系
print(isinstance(1, int)) # True
print(isinstance(5.2, float)) # True
print(isinstance(True, bool)) # True
print(isinstance(‘5.2’, str)) # True
print()函数:
print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
- sep实现分隔符
- end输出结束时的字符
- file是定义流输出的文件,可以是标准的系统输出sys.stdout,也可以重定义为别的文件
- flush是立即把内容输出到流文件,不作缓存
assert断言:当关键词后面条件为False时,程序自动崩溃并抛出AssertionError的异常
在进行单元测试时,可以用来在程序中置入检查点,只有条件为 True 才能让程序正常工作
for 迭代对象 in 可迭代对象:
代码块
else:
代码块
当for循环正常执行完的情况下,执行else输出。若有break,则不执行else
推导式:
列表推导式:[expr for value in collection [if condition]]
元组推导式:(expr for value in collection [if condition]) : 会产生一个generator
使用next可以返回迭代器的下一个值
字典推导式:{key_expr: value_expr for value in collection [if condition]}
集合推导式:{expr for value in collection [if condition]]
异常处理:
1、python标准异常总结:
BaseException:所有异常的 基类
Exception:常规异常的 基类
StandardError:所有的内建标准异常的基类
ArithmeticError:所有数值计算异常的基类
FloatingPointError:浮点计算异常
OverflowError:数值运算超出最大限制
ZeroDivisionError:除数为零
AssertionError:断言语句(assert)失败
AttributeError:尝试访问未知的对象属性
EOFError:没有内建输入,到达EOF标记
EnvironmentError:操作系统异常的基类
IOError:输入/输出操作失败
OSError:操作系统产生的异常(例如打开一个不存在的文件)
WindowsError:系统调用失败
ImportError:导入模块失败的时候
KeyboardInterrupt:用户中断执行
LookupError:无效数据查询的基类
IndexError:索引超出序列的范围
KeyError:字典中查找一个不存在的关键字
MemoryError:内存溢出(可通过删除对象释放内存)
NameError:尝试访问一个不存在的变量
UnboundLocalError:访问未初始化的本地变量
ReferenceError:弱引用试图访问已经垃圾回收了的对象
RuntimeError:一般的运行时异常
NotImplementedError:尚未实现的方法
SyntaxError:语法错误导致的异常
IndentationError:缩进错误导致的异常
TabError:Tab和空格混用
SystemError:一般的解释器系统异常
TypeError:不同类型间的无效操作
ValueError:传入无效的参数
UnicodeError:Unicode相关的异常
UnicodeDecodeError:Unicode解码时的异常
UnicodeEncodeError:Unicode编码错误导致的异常
UnicodeTranslateError:Unicode转换错误导致的异常
2、标准警告总结
Warning:警告的基类
DeprecationWarning:关于被弃用的特征的警告
FutureWarning:关于构造将来语义会有改变的警告
UserWarning:用户代码生成的警告
PendingDeprecationWarning:关于特性将会被废弃的警告
RuntimeWarning:可疑的运行时行为(runtime behavior)的警告
SyntaxWarning:可疑语法的警告
ImportWarning:用于在导入模块过程中触发的警告
UnicodeWarning:与Unicode相关的警告
BytesWarning:与字节或字节码相关的警告
ResourceWarning:与资源使用相关的警告
try
检测范围
except Exception[as reason]:
出现异常后的处理代码
如果异常的类型和except之后的名称相符,那么对应except子句被执行。
如果一个异常没有任何的except匹配,那么异常会传递给上层的try中
try:
f = open(‘test.txt’)
print(f.read())
f.close()
except OSError as error:
print(‘打开文件出错\n原因是:’ + str(error))
打开文件出错
原因是:[Errno 2] No such file or directory: ‘test.txt’
注:一个try语句可能包含多个except子句,但最多只有一个分支被执行(按照先后顺序)
一个except子句可以同时处理多个异常,这些异常被放在一个元组中
except (OSError, TypeError, ValueError) as error:
加上finally:无论try子句里面有无异常,都会执行
加上else:如果try子句无异常,则会执行
raise语句:抛出一个指定的异常
try:
raise NameError(‘HiThere’)
except NameError:
print(‘An exception flew by!’)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
