python基础语法
1.数字:
整数,int. 进制,0xa, 0o10,0b10. 布尔,bool,2个值True,False
2.浮点数:
1.2, 3.1415, -0.12 , 1.46e9 等价于1.46*10**9
3.复数:
1+2j
4. 字符串:
使用’ ''单双引导引用的字符的序列
''和"""单双三引导,可以跨行,可以在其中自由的使用单双引导
r前缀:在字符串前面加上r或者R前缀,表示该字符串不做特殊处理
f前缀:格式化字符串,字符串插值
转义序列
\ \ \t \r \n \’ \\’
前缀r,把里面的所有字符当成普通字符对待
缩进
未使用c等语言的花括号,而是采用缩进的方式表示层次关系
约定使用4个空格缩进
续行
在尾行使用\
如果使用各种括号,认为内是一个整体,内部跨行不行\
标识符
一个名字, 用来指代一个值
只能是字母,下划线和数字
只能以字母或下划线和数字
不能是python的关键字,例如def, class就不能作为标识符
python是大小写敏感的
常量
一旦赋值就不能改变值的标识符
Python中无法定义常量
字面常量
一个单独的量, 例如12、 ‘‘abc’’、’23456788654e-9’
变量
赋值后,可以改变的标识符
python的语言类型
python是动态语言、强类型语言
静态编译语言事前声明变量类型,类型不能再改变,编译时检查
动态编译语言不用事先声明类型,随时可以赋值为其他类型,编程时不知道什么类型,很难判断
强类型语言,不同类型之间操作,必须强制类型转换为同一类型。print(‘a’+1)
弱类型语言,不同类型间可以操作,自动隐式转换,JavaScript中console.log(1+‘a’)
进制
二进制 bin 十六进制 hex 八进制 oct 十进制 dec
运算符Opearator
算数运算符: + 、 - 、*、 /、%、**
自然除/结果是浮点数,整除//。
2 ** 5
位运算符
& | ^ << >> 分别是按位与、按位或、异或、左移、右移
异或—相异出一
~按位取反, 包括符号位
常用方式:乘除2的倍数,32//8相当于32>>3
12, 0xc, 0o14, 0b1100 ~12等于-13
原码:5 = >0b101, 1=>0b1, -1 =>-0b1, bin(-1) 原码是给人看的
反码: 正数的反码与原码相同;负数的反码符号位不变其余按位取反
补码:正数的补码与原码相同;负数的补码符号位不变其余按位取反后+1
负数表示法
早期数字电路的CPU中的运算器实现了加法器,但是没有减法器,减法要转换成加法
负数在计算机中使用补码存储,-1的补码为1111 1111
运算符
逻辑运算符:与或非 and or not
短路运算符,and如果前面的表达式等价为Falsh,后面就没有必要计算了,这个逻辑表达式最终一定等价为False
1 and ‘2’ and 0 0 and ‘abc’ and 1
or如果前面的表达式等价为True,后面就没有必要计算了,这个逻辑表达式最终一定等价为true 1 or false or None
真值
” “ 假 、’‘string’‘ 真、0 假、>=1 真、<=-1真、()空元组 假、[]空列表 假、{}空字典 假、None 假 空容器:空集合set、空字典dict、空列表list、空元组tuple
赋值运算符
a = min(3, 5)
+= -= *= /= %= //= 等
x = y = z = 10
成员运算符
in 、not
身份运算符
is、is not
运算符优先级
算数运算符 > 位运算符 > 比较运算符 > 逻辑运算符
单目 > 双目
表达式Expression
由数字、符合、括号、变量等的组合
算数表达式、逻辑表达式 、赋值表达式
Python中,赋值即定义,如果一个变量已经定义,赋值相当于重新定义
内存管理
变量无须事先声明,也不需要指定类型,这是动态语言的特性
Python使用引用计数记录所有对象的引用数
- 当对象引用数变为0,它就可以被 垃圾回收GC
当内存中存在大量不连续的空的内存空间,某个程序需要一定的连续内存空间时,垃圾回收启动,清除引用数为零的数据,腾出连续的内存空间,但是垃圾回收的启动可能会使当前正在运行的程序停止。stop the world
计数增加:赋值给其他变量就增加引用计数,例如x = 3;y = x; z = [x, 1]。实参实参,如foo(y)
计数减少:函数运行结束时,局部变量就会被自动销毁,对象引用计数减少。变量被赋值给其他对象。例如x = 3; y = x; x = 4
有关性能的时候,就需要考虑变量的引用问题,但是该释放内存还是尽量不释放内存,看需求
程序控制
顺序 分支 循环 : 使用While 或for 语句,可以循环嵌套
结束时,局部变量就会被自动销毁,对象引用计数减少。变量被赋值给其他对象。例如x = 3; y = x; x = 4
有关性能的时候,就需要考虑变量的引用问题,但是该释放内存还是尽量不释放内存,看需求