操作符 | 名称 | 示例 | 结果 |
---|---|---|---|
/ |
除法 | 3 / 4 |
0.75 |
// |
地板除(取整数部分) | 3 // 4 |
0 |
<< |
左移,移一位效果相等于”乘以2“ | 4<<2 |
16 |
>> |
右移,移一位效果相当于“除以2” | 4>>2 |
1 |
is
和not is
比较的是内存地址
=
和!=
比较的是变量的值
比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等
价的。
对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的
#1 if
if condition:
do something
#2 if-else
if condition :
do sth1
else:
do sth2
#3 if-elif-else
if condition1 :
do sth1
elif sondition2 :
do sth2
else :
do sth3
#4 assert
#assert 断言。当该关键词后边的条件为false时,程序自动崩溃并抛出AssertionError的异常
#通常用来置入检查点,只有条件为True才正常工作
#1 while
while condition :
do sth
#2 while-else
# 当while语句循环正常结束时,执行else语句。
# 如果while语句中途执行了跳出循环的语句,如break,则不执行else代码块的语句
while condition :
do sth1
else:
do sth2
#3 for
for 迭代变量 in 可迭代对象:
do sth
#4 for-else
# 当for语句循环正常结束时,执行else语句。
# 如果for语句中途执行了跳出循环的语句,如break,则不执行else代码块的语句
# 与while-else类似
for 迭代变量 in 可迭代对象:
do sth1
else :
do sth2
#5 range()
#6 enumerate()
enumerate(sequence, [start=0])
#sequence,一个序列、迭代器或其他可迭代对象
#start:下表起始位置
#返回enumerate(枚举)对象(index,‘对象’)
#7 pass
#不做任何事,但是要占个位置
#8 推导式
#列表推导式
#[ expr for value in collection [if condition] ]
x = [[i, j] for i in range(0, 3) for j in range(0, 3)]
print(x)
# [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
#元组推导式
#( expr for value in collection [if condition] )
a = (x for x in range(10))
print(a)
# at 0x0000025BE511CC48>
print(tuple(a))
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
#字典推导式
#{ key_expr: value_expr for value in collection [if condition] }
b = {i: i % 2 == 0 for i in range(10) if i % 3 == 0}
print(b)
# {0: True, 3: False, 6: True, 9: False}
#集合推导式
#{ expr for value in collection [if condition] }
c = {i for i in [1, 2, 3, 4, 5, 5, 6, 4, 3, 2, 1]}
print(c)
# {1, 2, 3, 4, 5, 6}
#1 try-except
#一个try语句可以跟多个except语句
try :
监测范围
except Exception[as reson]:
异常处理
try:
f = open('test.txt')
print(f.read())
f.close()
except OSError:
print('打开文件出错')
# 打开文件出错
#2 try - except - finally
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
finally:
无论如何都会被执行的代码
def divide(x, y):
try:
result = x / y
print("result is", result)
except ZeroDivisionError:
print("division by zero!")
finally:
print("executing finally clause")
divide(2, 1)
# result is 2.0
# executing finally clause
divide(2, 0)
# division by zero!
# executing finally clause
divide("2", "1")
# executing finally clause
# TypeError: unsupported operand type(s) for /: 'str' and 'str'
#3 try - except - else
try:
检测范围
except:
出现异常后的处理代码
else:
如果没有异常执行这块代码
try:
fh = open("testfile.txt", "w")
fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
print("Error: 没有找到文件或读取文件失败")
else:
print("内容写入文件成功")
fh.close()
# 内容写入文件成功
#4 raise
# raise语句抛出一个指定的异常
try :
raise NameError('HiThere')
except NameError as er:
print('An exception flew by!',repr(er))
#An exception flew by! NameError('HiThere')