真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python函數(shù)、參數(shù)解構(gòu)以及函數(shù)作用域的示例分析

這篇文章將為大家詳細(xì)講解有關(guān)python函數(shù)、參數(shù)解構(gòu)以及函數(shù)作用域的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)公司專注于邱縣網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供邱縣營銷型網(wǎng)站建設(shè),邱縣網(wǎng)站制作、邱縣網(wǎng)頁設(shè)計(jì)、邱縣網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)服務(wù),打造邱縣網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供邱縣網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

函數(shù)定義:

def 函數(shù)名(參數(shù)列表)
    函數(shù)體
    [return 返還值]
callable()  #判斷是否為調(diào)用對(duì)象(括號(hào)內(nèi)為函數(shù)名,后面不能有括號(hào))

例:
def add(x,y):
return x + y

add(10,2)         #位置傳參
add(x=10,y=2)     #關(guān)鍵字傳參,按照形參的名字一一對(duì)應(yīng)

**要求位置傳參必須在關(guān)鍵字穿參之前。
形參:

def add(x=3,y=4):
return x + y
add()
默認(rèn)不輸入,缺省值為x=3,y=4,輸入后已輸入的為準(zhǔn)
 
 
def sum1(iterable):  #iterable 用作可迭代對(duì)象
result = 0
for x in iterable:
result += x
return result
 
 
def sum1(iterable):  #代表可變形參,將多個(gè)參數(shù)封裝到元組,不可變。和上面區(qū)別:(參數(shù)為[1,3]就錯(cuò)了)
result = 0
for x in iterable:
result += x
return result

可變未知參數(shù):形參前用*   必須用位置傳參。
如上;

可變關(guān)鍵字參數(shù):形參前使用  如kwargs 必須用關(guān)鍵字參數(shù)
如下:
def showconfig(**kwargs):    #k-v對(duì)傳參
print(type(kwargs))
print(kwargs)

showconfig(host='192.168.1.1','username'='tom')

形參定義順序:普通參數(shù)、位置參數(shù)、關(guān)鍵字參數(shù)
username,*args,**kwargs  
   
 

keyword-only:  # 在一個(gè)args之后出現(xiàn)的普通參數(shù),成為keyword-only
 
def fn(
args,x)   # x只能關(guān)鍵字傳參
 
def fn3(x,y,*,z)   #  ''純粹為了改變'z'變成keyword-only
 
將必須使用名稱的才能使用的參數(shù),定義為keyword-only
 
 

參數(shù)解構(gòu)
add(*[4,5]) 相當(dāng)于add(4,5)
add(**{'a':2,'b':4})   相當(dāng)于add(a=2,b=4)
add(*{'a':2,'b':4}) 相當(dāng)于add(a,b)
add(*{'a':2,'b':4}.values())

return語句執(zhí)行之后,不會(huì)再進(jìn)行執(zhí)行函數(shù)內(nèi)其他語句
 
 
 

函數(shù)作用域:

 
在函數(shù)內(nèi)定義的變量只能在此函數(shù)中
 
def fn()
print('~~~')
x = 100             #x可見范圍只在函數(shù)內(nèi)部

fn()
print(x)                #不能輸出x
   
每一個(gè)函數(shù)都會(huì)開辟一個(gè)作用域
 
作用域分類:
 
全局作用域
在整個(gè)程序運(yùn)行環(huán)境中都可見
global
局部作用域  
在函數(shù)、類等內(nèi)部可見
局部作用域中的變量成為局部變量,適用范圍不能超過其所在作用域
local作用域
   
創(chuàng)建的.py的文件中,非函數(shù)的變量是全局變量
 
 
x = 1000
 
def fn2():
print(2,x)
print(1,x)
fn2()
打?。?br/>1 1000
2 1000
 

函數(shù)嵌套:

對(duì)外不可見,對(duì)內(nèi)可見  
 

例1:
x = 100
def fn():
x+= 200  #賦值即定義,x變成局部,但沒被賦值,所以這么寫會(huì)報(bào)錯(cuò)

fn()

 
例2:
x = 100
def fn()
print(x)    #會(huì)報(bào)錯(cuò),只定義了x為局部變量,此時(shí)沒有賦值
x = 200    #先定義為局部,等執(zhí)行進(jìn)行賦值

print(x)
fn()    
 

global  #聲明全局變量,要用加在行數(shù)前

例3:
x = 100
def fn()
global x    #聲明x為全局變量
print(x)    
x += 200

print(x)
fn()
print(x)    
打?。?br/>100
100
300
   
   
 

*****閉包  #嵌套函數(shù)中

自由變量:#未在本地作用域中定義的變量,
例如定義在內(nèi)層函數(shù)外的外層函數(shù)的作用域中的變量  
閉包:指的是內(nèi)層函數(shù)引用到了外層函數(shù)的自由變量,就形成了閉包

 
內(nèi)層函數(shù)如沒有用到外層函數(shù)的變量,則外層的變量會(huì)消亡,用到則不會(huì)消亡
   
 

def counter():
c = 0
def inc()
nonlocal c #聲明c不是當(dāng)前函數(shù)本地變量,而在上一級(jí)定義,也不是全局變量
c += 1
return
 

nonlocal :不適用于最外層函數(shù)
 
 

默認(rèn)值的作用域

缺省值

def foo (x=1) # 默認(rèn)x = 1
x += 1
print(x)

foo()
foo()
打?。?br/>1
1  
 
 

def bar (x=[]) # x=[]是引用類型
x += 1
print(x)    
 
foo()
foo()
打?。?br/>[1]
[1][1]  
 
bar.defaults
([1,1],)
 

.defaults #查看參數(shù)缺省值屬性

 
如果有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]  #相當(dāng)于a.extend([5]),就地修改,不會(huì)更改地址值
a = a + [5]  #相當(dāng)于創(chuàng)建了新列表

****變量名解析原則LEGB

Local
Enclosing
Global
Build-in 內(nèi)置模塊的命名空間 #print(open) print open

所以一個(gè)名詞的查找順序就是LEGB

函數(shù)的消亡
本質(zhì)使其引用計(jì)數(shù)清零

關(guān)于“python函數(shù)、參數(shù)解構(gòu)以及函數(shù)作用域的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。


文章題目:python函數(shù)、參數(shù)解構(gòu)以及函數(shù)作用域的示例分析
當(dāng)前鏈接:http://weahome.cn/article/jdocss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部