版本
目前python的版本为3.7.3
python2和python3区别
python 2.X | python 3.X | |
---|---|---|
语句函数化(例打印print(1,2)) | 打印元祖 | 打印函数2个参数 |
round函数 | 返回浮点数x的四舍五入值。 | i.5的取整变为举例最近的偶数 |
输入 | raw_input | input |
整除 | /和// | / |
– | – | – |
目前python 2.x已经停止更新
https://pythonclock.org/ 2.X倒计时
python解释器
官方CPython:C语言开发,最广泛的python解释器。
IPython:一个可以交互式,功能增强的Cpython
PyPy:python语言写的python解释器,JIT技术,动态编译Python代码
Jython
python的源代码编译成Java的字节码,跑在JVM上
IronPython:与Jython类似,运行在.Net平台上解释器,Python代码被编译成.Net的字节码。
python基础语法
注释——#注释的文本
数字
整数 | 浮点数 | 复数 | 字符串 | 转义序列 | 缩进 | 续行 | 标识符 |
---|---|---|---|---|---|---|---|
python3中只有长整型 | 本质上使用C语言的double类型 | 1+2j | 使用’和“单双引号引用的字符的序列,”‘和“”“单双三引号,可以跨行、可以在其中自由的使用单双引号,r前缀:在字符串前面加r或者R前缀,表示该字符不做特殊处理,f前缀表示格式化字符串 | \,\t,\r,\n,’,",前缀r把所有的字符当普通字符对待 | 未使用C等语言的花括号,采用缩进的方式表示层次关系,约定使用4个空格缩进 | 在行尾使用\,如果使用各种括号,认为括号内是一个整体,内部跨行不用| 一个名字,用来指代一个值,只能是数字字母下划线,数字不能开头,大小写敏感 |
常量 | 字符常量 | 变量 |
---|---|---|
一旦赋值就不能改变值的标识符 | 一个单独的量 | 赋值后可以改变值的标识符 |
python的语言类型
python是动态语言、强类型语言
静态编译语言 | 动态编译语言 |
---|---|
实现声明变量类型,类型不再改变 | 不用事先声明类型,随时可以赋值为其他类型,编程时很难判断 |
强类型语言 | 弱类型语言 |
不同类型之间操作,必须先强制类型转化为同一类型 | 不同类型间可以操作,自动隐形转化 |
进制
常见进制有二进制、八进制、十进制、十六进制
十进制转二进制:
方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。
二进制转十进制:
方法为:把二进制数按权展开、相加即得十进制数。
二进制转十六进制:
方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。
十六进制转二进制:
方法为:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。
原码、反码、补码,负数表示法
原码 | 反码 | 补码 | 负数表示法 |
---|---|---|---|
正数的原码符号位为0,负数的原码符号位为1 | 正数的反码与原码相同,负数的反码符号位不变其余按位取反 | 正数的补码与原码相同,负数的补码符号位不变其余按位取反后+1 | 正数和负数在计算机中都是按照补码储存的 |
正数取反=先转换成二进制(添加符号位)->取反->符号位后面取反->+1
负数取反=先转换成二进制(添加符号位)->取反->+1->符号位后面取反
运算符
算术运算符:+、-、*、/、%、**,自然除/结果是浮点数,整除//。
位运算符:& 、|、~、^、<<\ >>
# 异或,负数先将源码转为补码,比较完后如果最高位为0的话正数不用管
#为1,则转换为原码
print(10^(-9))
print(~-(9))
print(int('1110111',2))
比较运算符:==、!=、<、>、<=、>=,比较后返回一个bool值
逻辑运算符:与或非 and or not
赋值运算符:=、+=、-=、*=、/=、%=等
成员运算符:in、not in
身份运算符:is、is not
表达式
由数字、符号、括号、变量等组合
python中,赋值即定义,如果一个变量已经定义,赋值相当于重新定义
内存管理
python中变量不需要事先说明,编程中一般无须关心变量的存亡,一般也不关心内存的管理,使用引用计数记录所有对象的引用数。
当对象的引用数变为0,就可以被垃圾回收GC。
计数增加:赋值给其他变量会增加引用计数,实参传参
计数减少:函数运行结束后局部变量自动销毁,对象引用计数减少,变量被赋值给其他对象。
考虑性能的时候,就是需要考虑变量的引用问题,看需求是否释放内存。