Python解释器
- > 官方CPython
C语言开发,最广泛的Python解释器
- > IPython
一个交互式、功能增强的Cpython
- > PyPy
Python语言写的Python解释器,JIT技术,动态编译Python代码
- > Jython
Python的源代码编译成Java的字节码,跑在JVM上
- > IronPython
与Jython类似,运行在.Net平台上的解释器,Python代码被编译成.Net的字节码
Python基础语法
- > 注释———— # 标注的文本
- > 数字:
整数,不区分long和int
进制0xa、0o10、0b10
bool,2个值True、False - > 浮点数
1.2、3.1415、-0.12,1.46e9等价于1.46*10**9
- > 字符串
使用 ' " 单双引号引用的字符的序列
''' """ 单双三引号,可以跨行、可以在其中自由的使用单双引号
在字符吕上前面加上r或R前缀,表示该字符串不做特殊的处理
基础语法
- > 转义序列
\ \t \r \n \' \"
前缀r,把里面所有的字符当普通字符对待 - > 缩进
未使用C等语言的花括号,而是采用缩进的方式表示层次关系
约定使用4个空格缩进 - > 续行
在行尾使用\
如果使用各种括号,认为括号内是一个整体,内部跨行不用\ - > 标识符
(1) 一个名字,用来指代一个值
(2) 只能字母、下划线和数字
(3) 只能以字母或下划线开头
(4) 不能是python的关键字,例如def、class就不能作为标识符
(5) Python是大小写敏感的
约定:
不允许使唤用中文;
不允许使用歧义单词,例如class_
在python中不要随便使用下划线开头的表示符 - > 常量
一旦赋值就不能改变的标识符;
python中无法定义常量; - > 字面常量
一个单独的量,例如12、"abc"
- > 变量
赋值后,可以改变值的标识符
运算符Operator
算数运算符:
+ - * / % ** 自然除 / 结果是浮点数, 整除// 。 注: 2.x 中/ 和// 都是整除
- > 位运算符
& | ~ ^ << >>
常用方式: 乘除2的倍数,32//4 相当于 32 >> 2
原码、反码、补码,负数表示法
- > 原码
5 => 0b101 , 1 => 0b1,-1 => -0b1,bin(-1)
- > 反码
正数的反码与原码相同;负数的反码符号位不变其余按位取反
- > 补码
正数的补码与原码相同;负数的补码符号位不变其余按位取反后+1
- > 负数表示法
数字电路的CPU中的运算器实现了加法器,但是没有减法器,减法是转换成加法;
负数在计算机中使用补码存储,-1的补码为1111 1111
5 -1 => 5+(-1)直觉上是0b101-0b1,其实计算机中是0b101+0b11111111,溢出位舍弃
运算符
- > 比较运算符
== != > < <= >=
返回一个bool值 - > 逻辑运算符
与或非 and or not
短路运算符
and 如果第一个表达式为False,后面就没有必要计算了,这个逻辑表达式一定是False
or 如果第一个表达式为True,后面没有必要计算了,这个逻辑表达式一定是True - > 赋值运算符
a = min(3, 5)
+= -= *= /= %= 等
x = y = z = 10 - > 成员运算符
in 、not in
- > 身份运算符
is、is not
运算符优先级(由高到低)
运算符 | 描述 | 运算符 | 描述 |
---|---|---|---|
‘expr’ | 字符串转换 | x+y, x-y | 加,减 |
{key: expr,...} | 字典 | x<< y, x >> y | 移位 |
[expr1,expr2...] | 列表 | x&y | 按位与 |
(expr1,expr2...) | 元组 | x ^ y | 按位异或 |
function(expr,...) | 函数调用 | “x(管道符)y” | 按位或 |
x[index:index] | 切片 | x< y,x <= y.. | 比较 |
x[index] | 下标索引取值 | x is y ,x is not y | 等同测试 |
x.attribute | 属性引用 | x in y ,x not in y | 成员判断 |
~x | 按位取反 | not x | 逻辑否 |
+x, -x | 正,负 | x and y | 逻辑与 |
x ** y | 幂 | x or y | 逻辑或 |
x *y,x/y,x%y | 乘,除,取模 | lambda arg,...:expr | lambda匿名函数 |
表达式Expression
- > 由数字、符号、括号、变量等的组合
算数表达式
逻辑表达式
赋值表达式
python中,即赋值定义,如果一个变量已经定义,赋值相当于重新定义
内存管理
- > 变量无须事先声明,也不需要指定类型
动态语言的特性
- > 编程中一般无须关心变量的存亡,也不用关心内存的管理
- > python使用引用计数记录所有变量的引用数
当变量引用数变为0,它就可以被垃圾回收GC;
计数增加:赋值给其它变量就增加引用计数,例如x = 3; y = x
计数减少:
函数运行结束时,局部变量就会被自动销毁;
变量被赋值给其它对象。例如x = 3;y = x ; x = 4 - > 有关性能的时候,就需要考虑变量的引用问题,但是该释放内存,还是尽量不释放内存,看需求;
程序控制
- > 顺序
按照先后顺序一条条执行;
- > 分支
根据不同的情况判断,条件满足执行某条件下的语句
- > 循环
条件满足就反复执行,不满足就不执行或不再执行
单分支结构
if语句
if condition: 代码块
condition必须是一个bool类型,这个地方有一个隐式转换bool(condtion)
代码块类似于if语句的冒号后面的就是一个语句块
在if、for、def、class等
真值表
对象/常量 | 值 |
---|---|
" " | 假 |
"string" | 真 |
0 | 假 |
>= 1 | 真 |
<= -1 | 真 |
( )空元组 | 假 |
[ ]空列表 | 假 |
{ }空字典 | 假 |
None | 假 |
多分支结构
if condition1:
代码块1
elif condition2:
代码块2
elif condition3:
代码块3
......
else:
代码块
分支嵌套
嵌套结构,可以是分支、循环的嵌套
可以互相嵌套多层
例:
score = 80
if score < 0:
print('wrong')
else:
if score == 0:
print('egg')
elif score <= 100:
print('right')
else:
print('too big')
循环---while-for 语句*
while语法
while condition:
block
#当条件满足即condition为True,进入循环体,执行block;
for 语法
for element in iteratable:
block
#当可迭代对象中有元素可以迭代,进入循环体,执行block
循环continue、break语句
-
> continue
中断当前循环的当次执行,继续下一次循环;
-
> break
终止当前循环
- > 总结:
continue和break是循环的控制语句,只影响当前循环;
如果循环嵌套,continue和break也只影响语句所在的那一层循环;
continue和break不是跳出语句块,所以if condition: break不是跳出if,而是终止if外的break所在的循环
转载于:https://blog.51cto.com/limingyu/2158976