Python-变量、运算符与数据类型
进度0%
4月28日
标签
date
Apr 29, 2022
slug
Python-变量、运算符与数据类型
status
Published
tags
Python
summary
type
Post
变量、运算符与数据类型
变量
- 在使用变量前,需要现对其赋值
- 变量名可以包括字母、数字、下划线,但不能以字母开头
- python 变量名大小写是敏感的
运算符
- 算数运算符
加(+)、减(-)、乘(*)、除(/)、整除(//)、取余(%)、幂(**)
- 比较运算符
大于(>)、大于等于(>=)、小于(<)、小于等于(<=)、等于(==)、不等于(!=)
- 逻辑运算符
与(and)、或(or)、非(not)
- 位运算符
按位取反(~)、按位与(&)、按位或(|)、按位异或(^)、左移(<<)、右移(>>)
- 三元运算符
- 其他运算符
存在(in)、不存在(not in)
是(is)、不是(not is)
数据类型
int整型
<class 'int'>float浮点型<class 'float'>bool布尔型<class 'bool'>- 整型
- 浮点型
- 布尔型
在python中万物皆对象(object),基本数据类型也不例外,只要是对象就有相应的属性(attributes)和方法(methods)。
获取类型信息
- type()
- isinstance()
- 区别
type()不会认为子类是一种父类类型,不考虑继承关系。isinstance()会认为子类是一种父类类型,考虑继承关系。
位运算
1. 原码、反码和补码
二进制的三种表示形式,计算机内部使用补码表示。
- 原码:有一位符号位
- 反码:正数的反码是原码,复数的反码是符号位不变,其余位取反
- 补码:正数的补码就是原码,负数的补码就是反码+1
符号位:最高位为符号位,0表示正数,1表示负数。在位运算中符号位也参与运算。
2. 按位运算
- 按位非~
把二进制数的0和1全部取反,包括符号位
- 按位与&
只有两个都为1时才为1
- 按位或|
只要其中一个为1就为1
- 按位异或^
对应位不同时为1
- 按位左移
将数值的二进制表示向左移动i位
- 按位右移
将数值的二进制表示向右移动i位
3. 位运算实现快速计算
- 通过“>>”和“<<”可以实现快速计算2的倍数
- 通过“^”可以快速交换两个数
- 通过a&(-a)可以快速获取a的最后为1位置的整数
4. 位运算实现整数集合
一个数的二进制表示可以看做一个集合(0/1分别表示不在/在集合中)。
eg:集合{1, 3, 4, 8},可以表示成 01 00 01 10 10 而对应的位运算可就可以看作对集合进行的操作。
元素与集合的操作:
集合之间的操作:
整数在内存中是以补码的形式存在的,输出自然也是按照补码输出。
注意:
- python中
bin一个负数,是原码的二进制加上一个负号
- python中整型是不限制程度的,不会超范围溢出,普通32位,超过会自动当长整型处理,几乎没有限制
流程控制
条件语句
if语句
expression为真才执行expr_true_suiteif - else语句
if - elif - else语句
assert关键词
assert这个关键词我们称之为“断言”,当这个关键词后边的条件为 False 时,程序自动崩溃并抛出AssertionError的异常。循环语句
while循环
while - else循环
当
while循环正常执行完的情况下,执行else输出,如果while循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容。for循环
for - else循环
与
while - else类似range函数
enumerate()函数- sequence:一个序列、迭代器或其他支持迭代对象。
- start:下标起始位置。
- 返回 enumerate(枚举) 对象
break语句
可以跳出当前所在层的循环
continue语句
提前终止本轮循环,进入下一轮
pass语句
pass 语句的意思是“不做任何事”,如果你在需要有语句的地方不写任何语句,那么解释器会提示出错,而 pass 语句就是用来解决这些问题的。推导式
- 列表推导式
- 元组推导式
- 字典推导式
- 集合推导式
异常处理
- 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转换错误导致的异常
- python标准警告总结
- Warning:警告的基类
- DeprecationWarning:关于被弃用的特征的警告
- FutureWarning:关于构造将来语义会有改变的警告
- UserWarning:用户代码生成的警告
- PendingDeprecationWarning:关于特性将会被废弃的警告
- RuntimeWarning:可疑的运行时行为(runtime behavior)的警告
- SyntaxWarning:可疑语法的警告
- ImportWarning:用于在导入模块过程中触发的警告
- UnicodeWarning:与Unicode相关的警告
- BytesWarning:与字节或字节码相关的警告
- ResourceWarning:与资源使用相关的警告
try - except语句- 首先,执行
try子句(在关键字try和关键字except之间的语句) - 如果没有异常发生,忽略
except子句,try子句执行后结束。 - 如果在执行
try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行try - except语句之后的代码。 - 如果一个异常没有与任何的
except匹配,那么这个异常将会传递给上层的try中。
try 语句按照如下方式工作:
try - except - finally语句
try: 检测范围 except Exceptionas reason: 出现异常后的处理代码 finally: 无论如何都会被执行的代码
不管
try子句里面有没有发生异常,finally子句都会执行。try - except - else语句
如果在
try子句执行时没有发生异常,Python将执行else语句后的语句。raise语句
Python 使用
raise语句抛出一个指定的异常。