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語句是提供一個有效的機制,讓代碼更簡練,同時在異常産生時,清理工作更簡單。