中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

風(fēng)景旅游網(wǎng)站建設(shè)的設(shè)計(jì)思路無(wú)錫營(yíng)銷(xiāo)型網(wǎng)站建站

風(fēng)景旅游網(wǎng)站建設(shè)的設(shè)計(jì)思路,無(wú)錫營(yíng)銷(xiāo)型網(wǎng)站建站,北京網(wǎng)站建設(shè) 都選萬(wàn)維科技,網(wǎng)站建設(shè)名字目錄 前言: 1.函數(shù)對(duì)象 (1)函數(shù)對(duì)象的引用 (2)函數(shù)可以放到序列里面 (3)函數(shù)可以作為參數(shù) , 傳遞給另一個(gè)函數(shù) 2.名稱(chēng)空間 3.作用域 (1)作用域的理解 …

?

目錄

前言:

1.函數(shù)對(duì)象

(1)函數(shù)對(duì)象的引用

(2)函數(shù)可以放到序列里面

(3)函數(shù)可以作為參數(shù) , 傳遞給另一個(gè)函數(shù)

2.名稱(chēng)空間

?3.作用域

(1)作用域的理解

(2)作用域的轉(zhuǎn)換


前言:

? ? ? ? 前面已經(jīng)介紹了Python中函數(shù)的參數(shù)類(lèi)型,見(jiàn)下文。Python學(xué)習(xí)-----函數(shù)1.0(函數(shù)的定義和函數(shù)的參數(shù))_守約斯維奇的博客-CSDN博客

? ? ? ? 這一節(jié),我會(huì)進(jìn)一步去講解Python中的函數(shù),從對(duì)象、名稱(chēng)空間、作用域去講解,看正文。

1.函數(shù)對(duì)象

????????前面我們學(xué)習(xí)了關(guān)于Python中的變量類(lèi)型,例如int、str、bool、list等等……,其實(shí)函數(shù)我們可以去理解為一種更加高級(jí)的變量類(lèi)型,也就是函數(shù)對(duì)象,其實(shí)是一個(gè)更加高級(jí)的變量容器,我們可以去把函數(shù)對(duì)象當(dāng)做一個(gè)變量去使用。

(1)函數(shù)對(duì)象的引用

? ? ? ? 一個(gè)函數(shù)對(duì)象的形成是先定義一個(gè)函數(shù),然后寫(xiě)入函數(shù)體,最后把這個(gè)函數(shù)賦值給一個(gè)變量,也就是函數(shù)的對(duì)象,然后我們可以去通過(guò)這個(gè)函數(shù)變量來(lái)實(shí)現(xiàn)函數(shù)相應(yīng)的功能。(先賦值,再調(diào)用)

?示例1:

#定義一個(gè)函數(shù)對(duì)象fun
def fun():print('hello word',end=' ')print('wwww')
fun()  #直接調(diào)用這個(gè)函數(shù)對(duì)象

這種寫(xiě)法是最直接的,沒(méi)有返回值。

示例2:

def fun():print('ww')return 123
kun = fun()
print(kun,type(kun))
#輸出結(jié)果:ww
#         123 <class 'int'>

這個(gè)寫(xiě)法是定義了一個(gè)kun在變量,作為fun函數(shù)的對(duì)象,我們可以去通過(guò)這個(gè)對(duì)象去處理這個(gè)函數(shù)的返回值。

示例3:

def fun():return 123
kun = fun
print(kun,type(kun))
#輸出結(jié)果:<function fun at 0x00000154828AD280> <class 'function'>

這里我沒(méi)有加上()所以輸出結(jié)果是fun這個(gè)變量的地址,

示例4:?

def fun():return 123
kun = fun
print(kun(),type(kun))
#輸出結(jié)果:123 <class 'function'>

?這里先定義一個(gè)kun變量為fun的函數(shù)對(duì)象,下面如果要去調(diào)用這個(gè)函數(shù)的話(huà)就必須加上括號(hào),如果沒(méi)有括號(hào)那這個(gè)對(duì)象只是函數(shù)的地址。

(2)函數(shù)可以放到序列里面

?函數(shù)的返回值是一種變量類(lèi)型,同時(shí)序列可以?xún)?chǔ)存變量,所以函數(shù)是可以放到序列里面去? ??

這里就以列表為例子:?

def fun():return '牛馬'
kun = fun
li=[1,5,kun]
print(li)
print(li[2]())
#輸出結(jié)果:[1, 5, <function fun at 0x000001BFB1ABD280>]
#         牛馬

(3)函數(shù)可以作為參數(shù) , 傳遞給另一個(gè)函數(shù)

示例:?

def fun():return '牛馬'
def ff(st):print(f'我是{st}')
ff(fun())
#輸出結(jié)果:我是牛馬

(4)函數(shù)可以作為另一個(gè)函數(shù)的返回值

def ff():print('我愛(ài)你')return 520
def fun():return ff()
a=fun()
print(a,type(a))
#輸出結(jié)果:我愛(ài)你
#          520 <class 'int'>

這里是fun函數(shù)返回值為ff函數(shù),實(shí)際上是經(jīng)歷過(guò)了fun函數(shù)的功能,然后再次經(jīng)歷ff函數(shù)的功能,最后返回的是ff函數(shù)的520,故a的結(jié)果是520

2.名稱(chēng)空間

數(shù)據(jù)的名稱(chēng)是儲(chǔ)存到棧區(qū),而數(shù)據(jù)的內(nèi)容是儲(chǔ)存到堆區(qū),當(dāng)我們要去使用數(shù)據(jù)的內(nèi)容時(shí),我們可以通過(guò)數(shù)據(jù)的名稱(chēng)來(lái)直接去表示數(shù)據(jù)的內(nèi)容,也就是通過(guò)棧區(qū)去找到堆區(qū)的東西,然后在堆區(qū)拿出來(lái)去使用。棧區(qū)和堆區(qū)是有對(duì)應(yīng)關(guān)系的。http://t.csdn.cn/9plp1

1.內(nèi)建名稱(chēng)空間
?? ?生命周期:會(huì)隨著Python啟動(dòng)而生成,程序關(guān)閉會(huì)摧毀
? ? 保存的數(shù)據(jù):內(nèi)置函數(shù)(input,print....)
? ? 生成順序:程序里最先生成的
2.全局名稱(chēng)空間
?? ?生命周期:會(huì)隨著Python啟動(dòng)而生成,程序關(guān)閉會(huì)摧毀
? ? 保存的數(shù)據(jù):函數(shù)名,變量名
? ? 生成順序:在內(nèi)建名稱(chēng)空間的后面
3.局部名稱(chēng)空間
?? ?生命周期:隨著函數(shù)的調(diào)用而生成,函數(shù)調(diào)用接受后就關(guān)閉
? ? 保存的數(shù)據(jù):函數(shù)內(nèi)定義的名字
? ? 生成順序:隨著函數(shù)的調(diào)用而生成

所以,我們定義的函數(shù)是屬于局部名稱(chēng)空間,當(dāng)函數(shù)被調(diào)用完成了之后就會(huì)被銷(xiāo)毀,里面變量?jī)?chǔ)存到的棧堆區(qū)都會(huì)被銷(xiāo)毀?

?3.作用域

(1)作用域的理解

????????作用域?qū)嶋H上就是變量的作用范圍,之前我們學(xué)了C語(yǔ)言都知道,有全局變量和局部變量,比如在for循環(huán)里面,里面的變量是一種局部變量,我們?nèi)绻谥骱瘮?shù)外面去定義一個(gè)變量,那就是全局變量。Python也是一樣的道理,變量也是有相應(yīng)的作用域。而變量的作用域是由定義的位置決定的

全局變量與局部變量的名字相同的時(shí)候,實(shí)質(zhì)上是兩個(gè)不同的變量, 其棧堆區(qū)是完全不一樣的!所以我們不可以通過(guò)局部來(lái)改變?nèi)肿兞?#xff0c;否則就報(bào)錯(cuò)

示例1:?

#定義一個(gè)全局變量a
a=15
def fun():a=999print('hhh')
fun()
print(a)
#輸出結(jié)果:15

因?yàn)楹瘮?shù)是放到棧堆區(qū),當(dāng)函數(shù)調(diào)用完成了之后返回一個(gè)值,這個(gè)函數(shù)已經(jīng)被銷(xiāo)毀了,那么里面的變量也會(huì)與之銷(xiāo)毀,所以不會(huì)影響到全局變量,故a的值還是15

示例2:

#定義一個(gè)全局變量a
a=15
def fun():a=999return aprint(fun())
print(a)
#輸出結(jié)果:999
#         15

這個(gè)函數(shù)調(diào)用完成了之后就返回一個(gè)值,這個(gè)值函數(shù)內(nèi)部的功能的值,但是并沒(méi)有對(duì)這個(gè)函數(shù)以外的值進(jìn)行修改,所以a的結(jié)果還是15,而函數(shù)的返回值是999

示例3:

b=15
def fun():b=b+99
fun()
print(b)
#輸出結(jié)果:系統(tǒng)報(bào)錯(cuò)

因?yàn)閎是一個(gè)全局變量,而函數(shù)里面的b是一個(gè)重新定義的局部變量,所以我們不可以去直接修改這個(gè)局部變量b,因?yàn)檫@個(gè)b是沒(méi)有初始數(shù)值的,而且類(lèi)型也未定,所以無(wú)法進(jìn)行運(yùn)算處理

對(duì)比

b=15
def fun():b=0b+=99print(b)
fun()
print(b)
#輸出結(jié)果:99 15

對(duì)于這個(gè)而言,我給了函數(shù)里面b一個(gè)初始化值,所以可以進(jìn)行運(yùn)算處理,但這個(gè)b與外部全局變量的b是完全不相同,是兩個(gè)不同的變量?

(2)作用域的轉(zhuǎn)換

在C語(yǔ)言中我們可以去設(shè)置靜態(tài)變量(static),從而使得這個(gè)變量可以在函數(shù)進(jìn)行修改,同樣Python中可以利用關(guān)鍵字去修改變量的作用域,把局部變量作用到全局變量,或者把全局變量作用降級(jí)為局部

1.global 關(guān)鍵字 (局部變?nèi)?

在函數(shù)中,變量是這個(gè)函數(shù)的局部變量,只僅僅作用到函數(shù)內(nèi)部,我們對(duì)這個(gè)變量進(jìn)行修改是不會(huì)影響外面的變量的,如果把這個(gè)局部變量轉(zhuǎn)換為全局變量的話(huà),那么這變量就可以在函數(shù)里面進(jìn)行修改,而且還可以影響到外部,當(dāng)新定義global的變量名字與之前已有的變量名字出現(xiàn)重復(fù)的話(huà),新的變量?jī)?nèi)容會(huì)把之前的給覆蓋掉,而且新的全局變量也可以在函數(shù)內(nèi)部進(jìn)行修改,從而影響全局。

注意事項(xiàng):這個(gè)關(guān)鍵字是作用到全局變量,這個(gè)全局變量的棧堆區(qū)不會(huì)被銷(xiāo)毀?

b=15
def fun():b=123
fun()
print(b)
#函數(shù)里面的b與外面的b是不同性質(zhì)的!!!
#輸出結(jié)果:15

?對(duì)比

b=15
def fun():global bb=123
fun()
print(b)
#輸出結(jié)果:123

?重新定義了一個(gè)global后,此時(shí)這個(gè)b已經(jīng)是一個(gè)新的全局變量因?yàn)榍懊嬉呀?jīng)有了一個(gè)全局變量b,所以這個(gè)新的全局變量會(huì)因?yàn)槊窒嗤瑫?huì)把之前的全局變量b給直接覆蓋掉(類(lèi)似于類(lèi)型相同且名字相同的文件會(huì)被新的給覆蓋),故輸出結(jié)果是新的全局變量b的結(jié)果:123

2.nonlocal 關(guān)鍵字 (全局變局部)

功能:降權(quán),全局變成局部

前面講到過(guò),已知一個(gè)全局變量,但是我不可以在函數(shù)里面對(duì)這個(gè)全局變量進(jìn)行修改,而且函數(shù)里面的變量都是新的變量,既是跟外面的全局變量名字一模一樣,但是其儲(chǔ)存的棧堆區(qū)是完全不同的,那么當(dāng)我想去通過(guò)一個(gè)局部函數(shù)來(lái)修改這個(gè)全局變量的話(huà),這時(shí)候我就可以通過(guò)nonlocal關(guān)鍵字來(lái)進(jìn)行 降維處理 。

注意事項(xiàng)?:這個(gè)關(guān)鍵字是作用于嵌套函數(shù)的外部變量(相較于內(nèi)部函數(shù),外部函數(shù)是“全局”),這個(gè)變量的棧堆區(qū)會(huì)被銷(xiāo)毀

def fun():w=99def fun1():w=100fun1()return w
print(fun())
#輸出結(jié)果:99

VS

def fun():w=99def fun1():nonlocal ww=100fun1()return w
print(fun())
#輸出結(jié)果:100

這里,可以看出,w=99相對(duì)應(yīng)fun1()是一個(gè)全局變量,而fun1()內(nèi)部的w相對(duì)應(yīng)fun()是一個(gè)局部變量,當(dāng)我用nonlocal關(guān)鍵字去定義了fun()的變量w之后,這個(gè)w變量已經(jīng)是屬于fun1()函數(shù)內(nèi)部的變量,這時(shí)候我們可以去修改這個(gè)w的值,從而去影響外部函數(shù),最后w的返回值也就是被修改后的100

?

?? ? ? ? 好了,這一期就到這里的,thanks~

http://m.risenshineclean.com/news/64783.html

相關(guān)文章:

  • 做網(wǎng)站需要哪些審核廣州seo效果
  • 中國(guó)網(wǎng)站建設(shè)公司網(wǎng)絡(luò)營(yíng)銷(xiāo)和傳統(tǒng)營(yíng)銷(xiāo)的關(guān)系
  • 高安網(wǎng)站制作一元手游平臺(tái)app
  • 做定制網(wǎng)站引流app推廣軟件
  • 整套vi設(shè)計(jì)都包含哪些石家莊網(wǎng)站seo
  • 怎樣創(chuàng)作一個(gè)網(wǎng)站免費(fèi)建網(wǎng)站哪家好
  • 營(yíng)銷(xiāo)型網(wǎng)站建設(shè)公司價(jià)格恩施seo整站優(yōu)化哪家好
  • 網(wǎng)站服務(wù)器如何搭建杭州seo關(guān)鍵詞優(yōu)化公司
  • 小廠(chǎng)建網(wǎng)站網(wǎng)推平臺(tái)有哪些
  • 長(zhǎng)春做網(wǎng)站建設(shè)的公司視頻號(hào)下載器手機(jī)版
  • 成都微網(wǎng)站系統(tǒng)網(wǎng)站seo診斷報(bào)告
  • 網(wǎng)站架構(gòu)包括哪些廣州官方新聞
  • 做網(wǎng)站開(kāi)發(fā)有什么專(zhuān)業(yè)證seo專(zhuān)家是什么意思
  • 企業(yè)招聘官網(wǎng)北京seo網(wǎng)站開(kāi)發(fā)
  • 騰訊cdn api wordpressseo入門(mén)教學(xué)
  • 平安銀行官方網(wǎng)站seo網(wǎng)站推廣的主要目的包括
  • 商用網(wǎng)站開(kāi)發(fā)計(jì)劃書(shū)北京優(yōu)化seo公司
  • 獅山網(wǎng)站建設(shè)電商運(yùn)營(yíng)一天都干啥
  • dede打包好的網(wǎng)站怎么提取模板杭州關(guān)鍵詞優(yōu)化服務(wù)
  • 商城網(wǎng)站源碼下載全網(wǎng)搜索引擎
  • wordpress 移動(dòng)app網(wǎng)絡(luò)優(yōu)化工程師吃香嗎
  • 福州定制網(wǎng)站開(kāi)發(fā)制作搜索引擎關(guān)鍵詞seo優(yōu)化公司
  • 讓做網(wǎng)站策劃沒(méi)經(jīng)驗(yàn)怎么辦網(wǎng)站seo優(yōu)化案例
  • 網(wǎng)站維護(hù)中怎么解決營(yíng)銷(xiāo)策劃公司取名大全
  • 做網(wǎng)站主要來(lái)源seo排名優(yōu)化表格工具
  • wordpress 結(jié)構(gòu)解析關(guān)鍵詞seo教程
  • 類(lèi)似小紅書(shū)網(wǎng)站開(kāi)發(fā)費(fèi)用營(yíng)銷(xiāo)軟文模板
  • 新疆巴州建設(shè)局網(wǎng)站活動(dòng)推廣朋友圈文案
  • 淄博做網(wǎng)站多少錢(qián)sem推廣托管公司
  • 金融網(wǎng)站html5模板百度學(xué)術(shù)免費(fèi)查重入口