del:解除对变量的引用
a = 0
b = a
del(a)
print(a)->'a' is not defined
print(b)->0
global:在本地作用域修改全局变量
python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 。
a = 0
def func():
a = 1
print(a)
func()
print(a)
result: 0 1
a = 0
def func():
a += 1
print(a)
func()
print(a)
result: UnboundLocalError: local variable 'a' referenced before assignment
a = 0
def func():
global a
print(a)
a = 1
func()
print(a)
result: 0 1
lamda:匿名函数(lambda argument_list: expression)
raise:自行抛出异常
用法1:执行到raise时,直接抛出异常到except,code2不会被执行
try :
code1
raise
code2
except Exception as e:
print ("Error!"))
用法2:
try :
code1
if(condition)
raise Exception("Error!")
code2
except Exception as e:
print (e)
注意:如果raise的异常不被catch,则该异常会一直向上传递,直到被捕获,否则终止运行
yield:生成器
nolocal:在本地作用域中使用外部(非全局)变量。
with...as...:
with所求值的对象必须有一个__enter__(self)方法,一个__exit__(self, type, value, trace)方法。紧跟with后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as后面的变量。当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法。
处理异常:with后面的代码块抛出异常时,与之关联的type,value和stack trace传给__exit__()方法。开发库时,清理资源,关闭文件等等操作,都可以放在__exit__方法当中。 因此,Python的with语句是提供一个有效的机制,让代码更简练,同时在异常产生时,清理工作更简单。