概念:閉包,把乙個函式當作引數返回乙個替代版的函式,本質上就是乙個返回函式的函式
def funnc1()
print(「sunck is a agood man」)
def outer(func):
def inner()
print(「*************」)
func()
return inner
#f是函式func1的加強版本
f = outer(func1)
f()#複雜一點裝飾器
say(-10)
def outer(func):
def inner(age):
if age < 0:
age = 0
func(age)
return inner
#順序#使用@將裝飾器應用到函式,python2.4開始支援使用@
@outer #相當於執行率say = outer(say)
def say(age):
print(「sunck is %d years old」 % (age))
#say = outer(say)
say(-10)
def outer(func):
def inner(*args, **kwargs):
#新增修改的功能
print(「************」)
func(*args, **kwargs)
return inner
@outer #先定義裝飾器,後定義函式時,用@裝飾器
def say(name, age):#函式引數理論上無限制,最好不超過6、7個
print(「my name is %s, i am %d years old」 % (name, age))
import functools
print(int(「1010」, base = 2))
#偏函式
def int2(str, base = 2):
return int(str, base)
print(int2(「1100」))
#把乙個引數固定住,形成乙個新的函式
int3 = functools.partial(int, base = 2)
print (int3(「111」))
作用域:變數可以使用的範圍
程式的變數並不是在所有位置都能使用,訪問的許可權決定於變數的位置
作用域:
區域性作用域
全域性作用域
內建作用域
#當程式遇到問題時不讓程式結束,而越過錯誤繼續向下執行
格式:try:
語句texcept 錯誤碼 as e:
語句1except 錯誤碼 as e:
語句2……
except 錯誤碼 as e:
語句nelse:
語句e注意:else語句可有可無
作用:用來檢測try語句塊中的錯誤,從而讓except語句捕獲錯誤資訊並處理
邏輯:當程式執行到try-except-else語句時
如果當try語句t執行出現異常,匹配第乙個錯誤碼,如果匹配上,就執行對應的語句
如果當try語句t執行出現異常,沒有匹配的異常,錯誤將會被提交到上一層的try語句,或者到程式的最上層
如果當try語句t執行沒有出現錯誤,執行else下語句e
print(num)
try:
print(3/0)
except nameerror as e:
print(「沒有該變數」)
except zerodivisionerror as e:
print(「除數為0」)
else:
print(「**沒有問題」)
print(「**************」)
#使用except而不使用任何錯誤型別
try:
print(4/0)
except:
print(「程式異常」)
#使用except帶著多種異常
try:
pass
except (nameerror, zerodivisionerror):
print(「出現了nameerror 或zerodivisionerror」)
#特殊#1、錯誤其實是class(類),所以錯誤都繼承自baseexception,所以捕獲時,它捕獲了該型別的錯誤,還把子類一網打盡
try:
print(5/0)
except baseexception as e:
print(「異常1」)
except zerodivisionerror as e:
print(「異常2」)
#2、跨越多層呼叫
def func1(num):
print(1/num)
def func2(num):
func1(num)
def main():
func2(0)
try:
main()
except zerodivisionerror as e:
print(「*******」)
格式:try:
語句texcept 錯誤碼 as e:
語句1except 錯誤碼 as e:
語句2……
except 錯誤碼 as e:
語句nfinally:
語句f作用:語句t無論是否有錯都將執行最後的語句f
try:
print(1/0)
except zerodivisionerror as e:
print(「0」)
finally: #關閉檔案
print(「final」)
def func(num, div)
assert (div != 0), 「div不能為0」
return num / div
print(func(10, 0))
裝飾器和偏函式
1.裝飾器 讓其他函式在不需要做任何 變動的前提下增加額外的功能,返回值也是乙個函式物件 def a func print 1 def b print 2 func print 3 return b adef c print 4 當程式執行時 先執行 a,得到乙個1和函式的物件b,b和b 是不一樣的...
裝飾器和偏函式Python
裝飾器 概念 是乙個閉包,把乙個函式當做引數返回乙個替代函式,本質上是返回乙個函式的函式 def outer func def inner args,kwargs 新增修飾功能 print func args,kwargs return inner outer def myprint age,nam...
千峰學習第十一天 高階函式和裝飾器
實參高階函式 什麼是實參高階函式 引數是函式的函式就是實參高階函式系統實參高階函式的應用 a.普通用法 max 序列 求序列中元素的最大值 序列中元素的型別必須一致,而且元素本身支援比較運算 b.實參高階函式 max 序列,key 函式 通過函式來定製求最大值的方式 序列 需要獲取某種最大值對應的序...