目錄函式的巢狀
python中有一句話,萬物皆物件,之前講的int、float都是物件,函式也是物件,他們都是乙個類(class)
x = 2
y = 1.4
string = 'hades'
def func():
pass
print(type(x))
print(type(y))
print(type(string))
print(type(func))
def f1():
return 4
f = f1
print(f())
4
def f1():
print('from f1')
def f2(func):
func()
f2(f1)
from f1
def f1():
print('from f1')
def f2():
return f1
f = f2()
f()
from f1
def f1():
print('from f1')
func_list = [f1]
func_list[0]()
from f1
函式內部定義的函式,無法在函式外部使用
def f2():
def f1():
print('from f2')
f1()
f1() # nameerror: name 'f1' is not defined
現在有乙個需求,需要在乙個函式裡實現求圓的周長和面積,可以自主選擇功能
from math import pi
def circle(radius,action='area'):
def area():
return pi*radius**2
def perimeter():
return 2*pi*radius
if action != 'area':
return perimeter()
return area()
s = circle(10,'area')
c = circle(10,'perimeter')
print(s,c)
314.1592653589793 62.83185307179586
函式物件 函式巢狀和閉包函式
函式物件指的是函式可以被當做 資料 來處理,具體可以分為四個方面的使用,如下 func 記憶體位址 deffunc print from func 1 可以賦值 f func 將函式的記憶體位址繫結給f print f,func f 記憶體位址加 呼叫函式 2 可以當做函式當做引數傳給另外乙個函式 ...
函式物件 巢狀和閉包函式
精髓 可以把函式當成變數去用 func 記憶體位址 def func print from func f func 函式func賦值給變數f print f,func 列印f和func的記憶體位址,完全相同 f 相當於呼叫了函式func 輸出 func at 0x02f434a8 from func...
物件 巢狀和閉包函式
func 記憶體位址 def func print from func f func print f,func f def foo x x func的記憶體位址 print x x func foo func foo func的記憶體位址 def foo x x func的記憶體位址 return ...