[toc]
基础语法
常量/变量
- 字面常量
- 变量
变量一个指针,它指向一块内存;
v = 1
这样就定义了v这个变量
v2 = v
- 变量的命名规则
1 只能包含字母、数字和下划线
2 只能以字母或者下划线开头
3 不能是Python解释器的保留字 - 不能以类似 for if in 来做变量名,加个后缀也可以使用。但不建议这样使用;
运算符跟表达式
算术符
1 算术运算符
2 逻辑运算符
3 比较运算符
4 其它运算符 (赋值、成员运算符、身份运算符)算术运算符
1 算术运算符通常只针对数值类型
1+1 3 5 3/5 3//5 5%3 2*4比较运算符
1 == 相等
2 != 不等于
3 > 大于
4 >= 大于等于
5 < 小于
6 <= 小于等于
比较运算,最好是让他的类型是相同的
除了 == 和 !=最好类型相同
float (3)/5 # python2
- 逻辑运算符 (参与运算的成员只能是bool类型,或者可以隐式转化为bool为类型的类型)
True False
In [1]: True and True
Out[1]: True
# and 需要运算符两边都是True结果才为True
In [2]: True or False
Out[2]: True
# or 只要运算符两边任意一个为True,结果就是True
In [3]: not True
Out[3]: False
# not 类似短路的
In [4]: def add(x,y):
...: print("{0} + {1}".format(x,y))
...: return x + y
...:
In [5]:
In [5]: add(1,3)
1 + 3
Out[5]: 4
In [6]: add(1,3) > add(1,2) and add(2,4) < add(3,4)
1 + 3
1 + 2
2 + 4
3 + 4
Out[6]: True
In [7]: add(1,3) < add(1,2) and add(2,4) < add(3,4)
1 + 3
1 + 2
Out[7]: False
# 总是从左到右的计算,一旦能够斛决定表达式的最终的值,将立刻停止计算
In [8]: add(1,3) > add(1,2) or add(2,4) < add(3,4)
1 + 3
1 + 2
Out[8]: True
In [9]: add(1,3) < add(1,2) or add(2,4) < add(3,4)
1 + 3
1 + 2
2 + 4
3 + 4
Out[9]: True
In [10]: left = add(1,3) < add(1,2)
1 + 3
1 + 2
In [11]: right = add(2,4) < add(3,4)
2 + 4
3 + 4
In [12]: left or right
Out[12]: True
- 位运算符
In [12]: bin(60)
Out[12]: '0b111100'
In [13]: bin(12)
Out[13]: '0b1100'
In [14]: 60 & 12
Out[14]: 12
# 0011 1100
# 0000 1100
# 0000 1100
In [15]: 60 | 12
Out[15]: 60
# 0011 1100
# 0000 1100
# 0011 1100
In [16]: 60 ^ 12
Out[16]: 48
# 0011 1100
# 0000 1100
# 0011 0000
In [18]: int('0b110000',2)
Out[18]: 48
In [19]: ~60
Out[19]: -61
In [20]: 60 >>2
Out[20]: 15
In [21]: 60 <<2
Out[21]: 240
In [22]: a = 1
In [23]: a
Out[23]: 1
# 左边是一个标实符 右边是一个值(或者可以计算为一个值)
# 让这个标实符指向这个值所在的内存
In [24]: a = 3+4
In [25]: a
Out[25]: 7
- 运算符的优先级
In [26]: 1+2*3
Out[26]: 7
In [27]: 2 * 3 **2
Out[27]: 18
In [28]: 2 * 3 > 1+2
Out[28]: True
# 算术运算符优先级高于比较运算符
In [29]: 2* 3 > 1+2 and True
Out[29]: True
# 比较运算符的优先级高于逻辑运算符
In [30]: (2 * 3 > 1+2) and True
Out[30]: True
# 拿不准的时候加括号,或者我们的代码表现力更清晰的时候
In [32]: ((2*3) > (1+2)) and True
Out[32]: True
# 表达式由变量/常量 和运算符组成
- 程序控制结构
顺序
分支
循环
- 顺序结构
In [33]: a = 0
In [34]: a = a+1
In [35]: print(a)
1
- 分支结构
- 单分支
if cond: block
In [36]: if 1 < 2:
...: print ('1 less 2')
1 less 2
In [37]: if 1 < 2:
...: print ('1 less 2')
...: print ('main block')
1 less 2
main block
In [39]: bool(0)
Out[39]: False
In [40]: bool(-0)
Out[40]: False
In [41]: bool(1)
Out[41]: True
In [42]: bool(None)
Out[42]: False
In [43]: bool([])
Out[43]: False
In [44]: bool('')
Out[44]: False
# 0\空的内置结构\None bool的结构都是False,非0非空的内置结构都是True
- 双分支
if cond:
true_block
else:
false_block
In [45]: if 1<2:
...: print ('1<2')
...: else:
...: print ('2<1')
...:
1<2
if cond:
true_block
elif cond:
true_block
elif cond:
true_block
elif cond:
true_block
else:
false_block
In [5]: a = 5
In [6]: if a < 0:
...: print ('less 0')
...: elif a < 3:
...: print ('less 3')
...: elif a < 5:
...: print ('less 5')
...: elif a < 7:
...: print ('less 7')
...: else:
...: print ('oops')
...:
less 7
# 分支结构永远只有一个分支可执行;
- 循环有while for 两种语句
while cond:
block
In [8]: while a < 10:
...: print(a)
...: a +=1 # a = a + 1
...:
0
1
2
3
4
5
6
7
8
9
# 通常在while循环中,循环体只需要修改条件,以使得条件为假
In [34]: i = 1
In [35]: s =0
In [36]: while i <= 100:
...: s +=i
...: i +=1
...: print (s)
...:
for element in itrator:
block
In [26]: for i in range(5):
...: print (i)
...:
0
1
2
3
4
In [38]: for i in range(10):
...: if i % 2 == 0:
...: print (i)
...:
0
2
4
6
8
In [1]: for i in range(10):
...: if i > 3:
...: break
...: print (i)
...:
0
1
2
3
# break 用于提前结束循环;
In [3]: for i in range(10):
...: if i == 3:
...: continue
...: print (i)
...:
0
1
2
4
5
6
7
8
9
# continue 用于跳过之后的语句