Python 全棧開發 python函式高階

2022-08-10 03:39:14 字數 3093 閱讀 8655

函式的巢狀定義

def

func1():

print('

from func1')

def func2(): #

func2=記憶體位址

print('

from func2')

print

(func2)

func1()

函式的巢狀呼叫

#

比較兩個數的大小

defmax2(x,y):

if x >y:

return

x

else

:

returny#

比較三個數的大小

defmax3(x,y,z):

res1=max2(x,y)

res2=max2(res1,z)

return

res2

print(max3(11,199,2))

# 結果

# 199

函式在python中是第一類物件

1.可以被引用

x=1y=x

defbar():

print('

from bar')

f=bar #

作為物件賦值時 bar代表的值是 記憶體位址

f()

2.可以當中引數傳入(函式名的本質,函式的記憶體位址)

f=func
3.可以當中函式的返回值

def

bar(x):

print

(x) x()

bar(func)

4.可以當中容器型別的元素

def bar(x): #

x=func

return x #

return func

res=bar(func) #

res=func

#print(res)

res()

命名空間分為三類

內建命名空間:存放python直譯器自帶的名字,在直譯器啟動時就生效,直譯器關閉則失效

全域性命名空間:檔案級別的名字,在執行檔案的時候生效,在檔案結束或者在檔案執行期間被刪除則失效

區域性命名空間:存放函式內定義的名字(函式的引數以及函式內的名字都存放與區域性命名空間), #在函式呼叫時臨時生效,函式結束則失效

三種命名空間之間的載入順序和取值順序:

載入順序:內建(直譯器啟動時載入,程式執行前載入)-->全域性(從上到下順序載入進來的)-->區域性(呼叫的時候載入)--->內建

取值:在區域性呼叫:區域性命名空間--->全域性命名空間--->內建命名空間

在全域性範圍找:

全域性----內建----區域性使用:   

全域性不能使用區域性的

區域性的可以使用全域性的

1、命名空間和作用域是分不開的.

2、作用域分為兩種

全域性作用域:全域性命名空間與內建命名空間的名字都屬於全域性範圍,在整個檔案的任意位置都能被引用,全域性有效

區域性作用域:區域性命名空間,只能在區域性範圍內生效

3、站在全域性看

使用名字的時候,如果全域性有,用全域性的

如果全域性沒有,用內建的

4、為什麼要有作用域

為了函式內的變數不會影響到全域性

5、

pass

閉包:1.閉 :內部的函式

2.包 :包含了對外部函式作用域中變數的引用

def

hei():

x=20

definner():

x=10 #

如果x定義了,他就用自己的了,就實現不了閉包

print(x)

#

閉包的常用形式:

defhei():

x=20

definner():

'''閉包函式

'''print

(x)

return

inner()

閉包函式的常見形式

判斷閉包函式的方法:__closure__

#

輸出的__closure__有cell元素 :是閉包函式

deffunc():

name = '

eva'

definner():

print

(name)

print(inner.__closure__

)

return

inner

f =func()

f()#

輸出的__closure__為none :不是閉包函式

name = '

egon

'def

func2():

definner():

print

(name)

print(inner.__closure__

)

return

inner

f2 =func2()

f2()

view code

閉包獲取網路應用

#

from urllib.request import urlopen

#def index(url):

#def inner():

#return urlopen(url).read()

#return inner

#u=''

#get = index(u)

#print(get())

view code

pass

Python 全棧開發 python內建函式

abs 對傳入引數取絕對值 bool 對傳入引數取布林值,none,0,這些引數傳入bool後,返回false all 所有傳入引數為真,才為真 any 任何乙個傳入引數為真,才為真 ascii 自動執行傳入引數的 repr 方法 將物件轉換為字串 bin 接收乙個十進位制,轉換成二進位制 oct ...

Python 全棧開發 python元組tuple

什麼是元組 元組就是乙個不可變的列表 並不是列表,只是為了便於記憶 用途 用於存放多個值,只能讀不能二次賦值 表現形式 小括號 中間以逗號分割各個元素 eg tuples a b c d 生成乙個簡單的元組 tuples tuple range 5 print tuples 結果 0,1,2,3,4...

Python 全棧開發 監控篇

如果你已經玩轉了 python 程式語言語法,肯定想用這些知識,開發一款應用程式,它可以是在網上,可以炫耀或 那就需要全棧式開發 python。具體如何建立,部署和執行生產 python web 應用程式,參考 full stack python,本文主要介紹一點,監控。為什麼要監控?web 應用程...