函式物件和函式巢狀

2022-08-22 10:30:17 字數 1436 閱讀 5285

目錄函式的巢狀

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 ...