1、函式巢狀的呼叫
#2、函式巢狀的定義定義函式
defmax2(x,y):
m = x if x>y else y #三元運算:結果 = if條件成立的結果 if 條件 else if條件不成立的結果
returnm#
函式巢狀
defmax4(a,b,c,d):
res1 =max2(a,b)
res2 =max2(res1,c)
res3 =max2(res2,d)
return
res3
#print(max4(23,-7,31,11))
def二、命名空間及作用域func():
print(123)
deffunc2():
print(234)
func2()
#func()
1、命名空間
三種命名空間的載入順序:內建命名空間(程式執行前載入)->全域性命名空間(程式執行中:從上到下載入)->區域性命名空間(程式執行中:呼叫時才載入)。在區域性,自己有的變數名就用自己的,自己沒有的就逐級向上找,甚至到全域性的。但是全域性不可以使用區域性的命名空間。
2、作用域
作用域:站在範圍小的區域性,如果區域性有用區域性,區域性沒有往上一層找,一層一層往上找,找到第乙個可用的名字就用這個(1)global:修改全域性命名空間裡的變數值
a =0defdemo1():
global
a a = 2
(a)demo1()
#輸出結果為:2
print(a) #輸出結果為:2
(2)nonlocal:只修改區域性命名空間裡的 從內部往外部找到第乙個對應的變數名
#global情況
a =0
defdemo1():
a = 1
defdemo2():
defdemo3():
global
a a = '
小神仙'
(a) demo3()
(a) demo2()
(a)demo1()
#輸出結果為:小神仙 1 1
print(a) #輸出結果為:小神仙 (全域性空間變數a被修改)
#三、函式名的本質nonlocal情況
a =0
defdemo1():
a = 1
defdemo2():
defdemo3():
nonlocal a
a = '
小神仙'
(a) demo3()
(a) demo2()
(a)demo1()
#輸出結果為:小神仙 小神仙 小神仙
print(a) #輸出結果為:0 (全域性空間變數a未被修改)
函式名本質是函式的記憶體位址
1、可以被引用
def2、可以被當做容器類資料的元素func():
print('
in func')
f =func
def3.可以當變數使用(函式引數或者返回值)f1():
print('f1'
)def
f2():
print('f2'
)def
f3():
print('f3'
)l =[f1,f2,f3]
d = #呼叫
l[0]() #結果輸出為:f1
d['f2
']() #結果輸出為:f2
def四、閉包函式alex():
print(123)
deffunc():
return
alex
ret =func()
print(ret())
內部函式包含對外部作用域而非全域性作用域中的變數引用,內部函式就稱為閉包函式。
1、閉包函式最常用的用法:將內部函式返回,實現通過外部呼叫內部函式。
#2、閉包函式的判斷從網頁上爬取資訊
from urllib.request import urlopen #
模組def
get_url():
url = '
'def
inner():
ret =urlopen(url).read()
return
ret
return
inner
get_web =get_url()
print(get_web())
#輸出的__closure__有cell元素 :是閉包函式
deffunc():
name = '
eva'
definner():
(name)
print(inner.__closure__
)
return
inner
f =func()
f()#
輸出的__closure__為none :不是閉包函式
name = '
egon
'def
func2():
definner():
(name)
print(inner.__closure__
)
return
inner
f2 =func2()
f2()
Python學習之路 高階函式
python語言中,一切皆物件。函式本身也是乙個物件,我們知道函式的引數可以傳遞任意物件,函式的返回值也可以返回任意物件,那麼在python中函式能不能傳遞或者返回乙個函式呢?答案是當然可以,我們把這種傳參為函式或者返回值為函式物件的函式稱為高階函式。定義 在計算過程中,如果其中後一步都要用到前一步...
python 函式的高階內容
python的函式也是一種值,所有函式都是function 物件,這意味著可以把函式本身賦值給變數,就像把整數 浮點數 列表 元組賦值給變數一樣 定義乙個計算乘方的函式 def pow base,exponent result 1 for i in range 1,exponent 1 result...
Python高階之路 7 2 1 建立函式
在前面提到,函式是可以呼叫的,而且是可以互動的,既然可以呼叫和互動,那麼久需要有乙個函式名,以及函式引數和返回值。這是函式的三個重要元素,其中函式名是必須的,函式引數和返回值是可選的。如果函式只是簡單的執行某段 並不需要與外部進行互動,那麼函式引數與返回值可以省略。定義函式要使用def語句。def ...