f用於{}的格式化,{}內是變數或函式的某個形參;%s這種格式化不行
def func():
name='小明'
print(
f'good morning,')
func()
def func(name):
print(
f'good morning,')
func('小明')
****************************************分割線****************************************
高階函式:引數為函式;閉包:返回值為函式;裝飾器:返回值為函式的高階函式
高階函式:
from functools import reduce
def accumulate(start,end,handle,sign):
t= map(
handle
,range(start,end+1))
#首參的函式體內若用了lambda,此處就要改為加()的v了
return
reduce
(lambda x,y:
eval('%s%s%s' %(x,sign,y)),t)
#map的首參函式,其內的引數個數不定,同一列表中的各元素互不影響,返回一
串值;# 而reduce的首參函式內必須是倆參,迭代處理二參列表中的各元素,返回一
個值def add(start,end,handle):
return accumulate(start,end,handle,'+')
def product(start,end,handle):
return accumulate(start,end,handle,'*')
def handle(n):
return n**3
print(add(1,5,handle))
**********************分割線
**********************
變數在使用前要先有初始值,函式式變數亦同:在使用函式作引數時,表面上在上文要已有這個函式的定義,除非是跟在return的後面(其實在機器內依然是走在return的前面——因為在執行到函式內的return時,已先一步自上而下掃瞄過所有的def頭了;在呼叫函式時是直接進入函式體內,不再重複掃瞄def頭)
def abc(): #第1句
return x #第4句
x='qwerty' #第2句
print(abc()) #第3句
#上述**,若改為def abc(x)……print(abc('helloworld')),即函式頭中的形參變數和函式體外的全域性變數衝突,那麼return x使用的是下文傳來的實參helloworld,否則就只能退而求其次地選用函式體外的全域性變數x。
若為def abc(y),那麼return x迫於無奈也只能使用全域性變數x——優先形參,找不到形參時方採用全域性變數
****************************************分割線****************************************
閉包:
def count():
#x=i:x是匿名函式的形參,i是實參;不寫=i,則報錯lambda()缺少引數(實參)
t=[lambda x
=i:x*x for
i in range(1,4)]
#生成3個傳來了實參的函式體
return t
x,y,z=count()
print(x(),y(),z(),sep=';')
*******************分割線
*******************
def func():
x,y=1,2
return lambda m=x,n=y:m+n
#m=x,n=y:x和y是預設實參
print(func()()) #輸出3
print(func()(3,7))
#輸出10
*******************分割線
*******************
def build(x, y):
return lambda: x * x + y * y
#不加lambda,返回的是int;加了返回的則是function
print(build(2,3)())
函式高階(閉包)
def outer func loc list def inner func name print s loc list s name,loc list return inner func clo func 0 outer func clo func 0 clo func 0 clo func 0 ...
Python 高階函式 閉包
閉包 什麼是閉包 如果在乙個內部函式裡,對在外部作用域 但不是在全域性作用域 的變數進行引用,那麼內部函式就被認為是閉包。需要滿足的條件 1 乙個函式內巢狀乙個函式 2 外部函式的返回值必須是這個內部函式 3 內部函式必須使用外部函式中的區域性變數 def fun 1 num 1 9 def fun...
11 函式高階 閉包
內部函式對外部函式作用域裡變數的引用 非全域性變數 則稱內部函式為閉包。def outer n 10 def inner print inner n return inner val outer print val val 閉包的意義 返回的函式物件,不僅僅是乙個函式物件,在該函式外還包裹了一層作用...