十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章將為大家詳細講解有關(guān)python函數(shù)、參數(shù)解構(gòu)以及函數(shù)作用域的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
def 函數(shù)名(參數(shù)列表) 函數(shù)體 [return 返還值]
例:
def add(x,y):
return x + y
add(10,2) #位置傳參
add(x=10,y=2) #關(guān)鍵字傳參,按照形參的名字一一對應
def add(x=3,y=4):
return x + y
add()
默認不輸入,缺省值為x=3,y=4,輸入后已輸入的為準
def sum1(iterable): #iterable 用作可迭代對象
result = 0
for x in iterable:
result += x
return result
def sum1(iterable): #代表可變形參,將多個參數(shù)封裝到元組,不可變。和上面區(qū)別:(參數(shù)為[1,3]就錯了)
result = 0
for x in iterable:
result += x
return result
可變未知參數(shù):形參前用* 必須用位置傳參。
如上;
可變關(guān)鍵字參數(shù):形參前使用 如kwargs 必須用關(guān)鍵字參數(shù)
如下:
def showconfig(**kwargs): #k-v對傳參
print(type(kwargs))
print(kwargs)
showconfig(host='192.168.1.1','username'='tom')
形參定義順序:普通參數(shù)、位置參數(shù)、關(guān)鍵字參數(shù)
username,*args,**kwargs
keyword-only: # 在一個args之后出現(xiàn)的普通參數(shù),成為keyword-only
def fn(args,x) # x只能關(guān)鍵字傳參
def fn3(x,y,*,z) # ''純粹為了改變'z'變成keyword-only
將必須使用名稱的才能使用的參數(shù),定義為keyword-only
add(*[4,5]) 相當于add(4,5) add(**{'a':2,'b':4}) 相當于add(a=2,b=4) add(*{'a':2,'b':4}) 相當于add(a,b) add(*{'a':2,'b':4}.values())
return語句執(zhí)行之后,不會再進行執(zhí)行函數(shù)內(nèi)其他語句
在函數(shù)內(nèi)定義的變量只能在此函數(shù)中
def fn()
print('~~~')
x = 100 #x可見范圍只在函數(shù)內(nèi)部
fn()
print(x) #不能輸出x
每一個函數(shù)都會開辟一個作用域
作用域分類:
全局作用域
在整個程序運行環(huán)境中都可見
global
局部作用域
在函數(shù)、類等內(nèi)部可見
局部作用域中的變量成為局部變量,適用范圍不能超過其所在作用域
local作用域
創(chuàng)建的.py的文件中,非函數(shù)的變量是全局變量
x = 1000
def fn2():
print(2,x)
print(1,x)
fn2()
打印:
1 1000
2 1000
對外不可見,對內(nèi)可見
例1:
x = 100
def fn():
x+= 200 #賦值即定義,x變成局部,但沒被賦值,所以這么寫會報錯
fn()
例2:
x = 100
def fn()
print(x) #會報錯,只定義了x為局部變量,此時沒有賦值
x = 200 #先定義為局部,等執(zhí)行進行賦值
print(x)
fn()
例3:
x = 100
def fn()
global x #聲明x為全局變量
print(x)
x += 200
print(x)
fn()
print(x)
打?。?br/>100
100
300
自由變量:#未在本地作用域中定義的變量,
例如定義在內(nèi)層函數(shù)外的外層函數(shù)的作用域中的變量
閉包:指的是內(nèi)層函數(shù)引用到了外層函數(shù)的自由變量,就形成了閉包
內(nèi)層函數(shù)如沒有用到外層函數(shù)的變量,則外層的變量會消亡,用到則不會消亡
def counter():
c = 0
def inc()
nonlocal c #聲明c不是當前函數(shù)本地變量,而在上一級定義,也不是全局變量
c += 1
return
nonlocal :不適用于最外層函數(shù)
缺省值
def foo (x=1) # 默認x = 1
x += 1
print(x)
foo()
foo()
打印:
1
1
def bar (x=[]) # x=[]是引用類型
x += 1
print(x)
foo()
foo()
打?。?br/>[1]
[1][1]
bar.defaults
([1,1],)
如果有keyword-only:
.kwdefults
例:
def foo (xyz,m=123,*,n='abc',t = [1,2]:
print(foo.defaults,foo.kwdefults)
(123,){'n':'abc','t':[1,2]}
a += [5] #相當于a.extend([5]),就地修改,不會更改地址值
a = a + [5] #相當于創(chuàng)建了新列表
Local
Enclosing
Global
Build-in 內(nèi)置模塊的命名空間 #print(open) print open
所以一個名詞的查找順序就是LEGB
函數(shù)的消亡
本質(zhì)使其引用計數(shù)清零
關(guān)于“python函數(shù)、參數(shù)解構(gòu)以及函數(shù)作用域的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。