assert语句
用法:
assert expression
assert也称之为断言,用来测试表示式,其返回值为假,就会触发异常。为真时,啥也不做。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
>>> assert 1==1
>>> assert 1==0
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
assert 1==0
AssertionError
>>> assert True
>>> assert False
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
assert False
AssertionError
>>> assert 3<2
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
assert 3<2
AssertionError
|
assert断言语句添加异常参数
assert的异常参数,其实就是在断言表达式后添加字符串信息,用来解释断言并更好的知道是哪里出了问题。格式如下:
assert expression [, arguments]
例如:
1
2
3
4
5
6
7
8
9
10
11
|
>>> assert 2==1,'2不等于1'
Traceback (most recent call last):
File "D:/Data/Python/helloworld/helloworld.py", line 1, in <module>
assert 2==1,'2不等于1'
AssertionError: 2不等于1
>>> assert 3>2,'3大于2' #True时,不输出信息
>>> assert 3<2,'3小于2'
Traceback (most recent call last):
File "/home/main.py", line 1, in <module>
assert 3<2,'3小于2'
AssertionError: 3小于2
|
实际上,assert expression
相当于以下if语句。
1
2
|
if __debug__:
if not expression: raise AssertionError
|
assert expression1, expression2
相当于以下if语句。
1
2
|
if __debug__:
if not expression1: raise AssertionError(expression2)
|
其中debug是系统内置的常量,在Cpython实现中,内置变量debug在正常情况下为True,在请求优化时为False(命令行选项-O)。也就是说优化了的Cpython是不能使用断言的。
一般来说,开发环境中为了调试,能使用断言。生产环境中,为了系统的安全和效率优化,会关掉断言功能。启动Cpython解释器时,命令行选项-o,可关掉断言功能。
pass语句
pass是一个空操作。当它被执行时,没有任何反应。当语法需要语句但不需要执行任何代码时,它可用作占位符。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# 定义没有实现内容的空函数func
def func():
pass # 没有任何实现
# 定义没有实现内容的类C
class C:
pass # 没有任何实现
# 定义没有实现的语句块
while True:
pass # 没有实现的while循环
if True:
pass # 没有实现的if else
else:
pass # 没有实现的if else
for i in list:
pass # 没有实现的for循环
|
del语句
用法:
del target_list
del语句删除一些对象引用。注意不是把内存地址删了,你只是删除了绑定,它就变为了一个可回收的对象,内存会不定期回收。
删除是递归定义的,与定义赋值的方式非常相似。删除目标列表会从左到右递归删除每个目标。 del a, b, c
会先删除a,再删除b,最后删除c
删除名称将删除该名称与本地或全局名称空间的绑定。如果名称未绑定,则将引发NameError异常。
例如:
1
2
3
4
5
6
7
|
a = [1,2,3,4,5]
b = a
print("列表对象a的值:",a) # 输出列表对象a
print("列表对象b的值:",b) # 输出列表对象b
del a # 删除列表对象a,删除的是名称a和列表[1,2,3,4,5]之间的绑定
print("列表对象b的值:",b) # 再一次输出列表对象b
print("列表对象a的值:",a) # 再一次输出列表对象a
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
7
|
列表对象a的值: [1, 2, 3, 4, 5]
列表对象b的值: [1, 2, 3, 4, 5]
列表对象b的值: [1, 2, 3, 4, 5]
Traceback (most recent call last):
File "/home/main.py", line 7, in <module>
print("列表对象a的值:",a) # 再一次输出列表对象a
NameError: name 'a' is not defined
|
删除属性引用
例如:
1
2
3
4
5
6
7
8
|
class A:
def __init__(self,name):
self.name = name
a = A("instance a")
print("实例a的名字是:",a.name)
del a.name
print("实例a的名字是:",a.name)
|
执行以上程序会输出如下结果:
1
2
3
4
5
|
实例a的名字是: instance a
Traceback (most recent call last):
File "/home/main.py", line 8, in <module>
print("实例a的名字是:",a.name)
AttributeError: 'A' object has no attribute 'name'
|
删除索引对象
例如:
1
2
3
4
|
a = [1,2,3,4,5]
print("列表对象a的值:",a) #输出列表对象a
del a[1] #删除索引对象a[1]
print("列表对象a的值:",a) #再一次输出列表对象a
|
执行以上程序会输出如下结果:
1
2
|
列表对象a的值: [1, 2, 3, 4, 5]
列表对象a的值: [1, 3, 4, 5]
|
删除切片
例如:
1
2
3
4
|
a = [1,2,3,4,5]
print("列表对象a的值:",a) # 输出列表对象a
del a[1:3] # 删除切片对象a[1:3]
print("列表对象a的值:",a) # 再一次输出列表对象a
|
执行以上程序会输出如下结果:
1
2
|
列表对象a的值: [1, 2, 3, 4, 5]
列表对象a的值: [1, 4, 5]
|
with语句
Python2.6中出现的新语句。with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等。
要使用 with 语句,首先要明白上下文管理器这一概念。有了上下文管理器,with 语句才能工作。关于上下文管理器,将在以后介绍。
例如:
1
2
3
|
# 打开test.txt文件,读取所有内容并打印出来
with open('test.txt') as f:
print(f.readlines())
|
转载请注明本网址。