一、基础语法
注释:# 标注的文本
数字整数:不区分long和int
进制0xa,0o10,0b10
bool:True False
浮点数:小数
复数:1=2j
字符串使用 ' " 单引号双引号引用字符串的序列
'''和"""可以跨行,可以在其中自由使用单双引号
在字符串前面加r或者R前缀,表示该字符串不做特殊的处理
转义序列\\ \t \r \n \' \"
前缀r,把里面所有的字符当做普通字符串处理
缩进不使用C等语言的花括号,而是采用缩进表示层次关系
约定使用4个空格缩进
续行在行尾使用\
如果使用各种括号,认为括号内是一个整体,内部跨行不用\
标识符
一个名字,用来指代一个值
只能字母、下划线和数字
只能以字母或下划线开头
不能是Python的关键字,例如def class等作为标识符
Python对大小写敏感
约定:
不允许使用中文
不允许使用歧义单词,例如class_
在Python中不随便使用下划线开头的标识符
常量一旦赋值就不能改变值的标识符
Python中无法定义常量
字面常量一个单独的量,例如12,'abc'
变量赋值后可以改变值的标识符
二、Python的语言类型
Python是动态语言,强类型语言
静态编译语言事先声明变量类型,类型不能在改变
编译时检查
动态编译语言不用事先声明变量类型,随时可以复制为其他类型
编程时不知道是什么类型,很难推断
强类型语言不同类型之间操作,必须强制类型转换为同一类型。print('Fly'+2)
弱类型语言不同类型间可以操作,自动隐式转换
三、运算符
算数运算符+ - * / % **
自然数除/结果是浮点数,整除//。注:2.X中/和//都是整除
位运算符& | ~ ^ << >>
常用方式:乘除2的倍数,32//4 相当于32>>2
~12 = -13
比较运算符== != > < >= <=
返回一个bool
1
链式比较操作符4>3>2
逻辑运算符与或非 and or not
短路运算符and 如果第一个表达式为False,后边就没有必要计算,这个逻辑表达式一定是False
or 如果第一个表达式是True,后面没有必要计算,这个逻辑表达式一定是True
赋值运算符a = min(1.10)
+= -= *= /= %=
x=y=z=100
成员运算符in, not in
身份运算符is, is not
运算符优先级(由高到低)
运算符描述
'expr'字符串转换
{key:expr,……}字典
[expr1,expr2……]列表
fun(expr,……)函数调用
x[index:index]切片
x[index]列表索引取值
x.attribute属性调用
~x按位取反
+x,-x正,负
x**y幂
x*y,x/y,x%y乘,除,取模
x+y,x-y加,减
x<>y移位
X&Y按位与
x^y按位异或
x|y按位或
xy,x!=y……比较
x is y,x is not y等同测试
x in y, x not in y成员判断
not x逻辑否
x and y逻辑与
x or y逻辑或
lambda arg,……:expr匿名函数
算数运算符>位于运算符>身份运算符>成员运算符>逻辑运算符
记不住,用括号
长表达式多用括号
四、表达式
由数字,符号,括号,变量等的组合算数表达式
逻辑表达式
赋值表达式Python中,赋值即定义,如果一个变量已经定义,赋值相当于重新定义
五、内存管理
变量无需事先声明,也不需指定类型动态语言的特性
编程中一般无需关心变量的存亡,也不需要关心内存的管理
Python中使用引用计数记录所有对象的引用数当对象引用数变为0时,它就可以被垃圾回收GC
计数增加:赋值给其它变量就增加引用计数
计数减少:函数运行结束时,局部变量就会自动被销毁,对象引用计数减少
变量被赋值给其它对象。例如x=3;y=x;x=4
有关性能的时候,就需要考虑变量的引用问题,但是该释放内存,还是尽量不是放内存,看需求
六、分支
单分支
if 语句
if condition:
代码块
condition必须是bool类型,这个地方有一个隐式转换bool(condition)
if 1<2:
print('少的')
真值表
对象/常量值
""空字符串假
"string"真
0假
>=1真
<=-1真
()空元组假
[]空列表假
{}空字典假
None假真值表
多分支
if....elif....else语句
if codition1:
代码块1
elif codintion2:
代码块2
....
else:
代码块
a = 5
if a<0:
print('negative')
elif a==0:
print('zero')
else:
print('positive')
分支嵌套
score = 80
if score < 0:
print('wrong')
else:
if score == 0:
print('egg')
elif score <= 100:
print('right')
else:
print('too dog')
嵌套结构可以是分支,循环的嵌套,可以互相嵌套多层
七、循环
while语句
语法
while condition:
block当条件满足,即condition为True,进入循环体,执行block
flag = 10
while flag:
print(flag)
flag -= 1
for语句
语法
for ele in iterable:
block当可迭代对象中有元素可以迭代,进入循环体,执行block
range函数
flag = 10
for i in range(10):
print(i+1)
for i in range(10):
print(10-i)
continue语句
中断当前循环的当次执行,继续下一次循环
举例:计算10以内的偶数
for i in range(10):
if not i%2:
print(i)
for i in range(0, 10, 2):
print(i)
for i in range(0,10):
if i&1:
continue
print(i)
break语句
终止当前循环
举例:计算1000以内的被7整除的前20个数
count = 0
for i in range(0, 1000, 7):
print(i)
count += 1
if count >= 20:
break
总结
continue和break是循环的控制语句,只影响当前循环,包括while,for循环
如果是嵌套循环。continue和break只影响语句所在的那一层循环
continue和break不是跳出语句块,所以if cond:break 不是跳出if, 而是终止if外的break所在的循环
循环else子句
语法
while condition:
block
else:
block
for element in iteratable:
block
else:
block
如果循环正常执行结束,就执行else子句;如果使用break终止,else子句不会执行