<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          python的這四大函數(shù)類型得牢記(變量,引用,匿名,遞歸)

          共 2447字,需瀏覽 5分鐘

           ·

          2021-05-14 11:25


          python的這四大函數(shù)類型得牢記(變量,引用,匿名,遞歸)

          • 四大函數(shù)類型

          • 局部和全局變量

          • 引用

          • 匿名函數(shù)

          • 遞歸

          一. 局部和全局變量

          1、局部變量

          (1)含義:就是在函數(shù)內(nèi)部定義的變量(作用域僅僅局限在函數(shù)的內(nèi)部)不同的函數(shù)可以定義相同的局部變量,但是各自用各自的 不會(huì)產(chǎn)生影響

          (2)作用:為了臨時(shí)的保存數(shù)據(jù) 需要在函數(shù)中定義來進(jìn)行存儲(chǔ)

          2、全局變量:可以被所有函數(shù)調(diào)用

          3、突發(fā)情況

          當(dāng)全局變量和局部變量出現(xiàn)重復(fù)定義的時(shí)候,程序會(huì)優(yōu)先執(zhí)行使用函數(shù)內(nèi)部定義的變量(地頭蛇)

          如果在函數(shù)的內(nèi)部要想對(duì)全局變量進(jìn)行修改的話 必須使用global 關(guān)鍵字進(jìn)行聲明

          對(duì)于可變類型(dict、list)來講,全局變量要想在函數(shù)中修改的話,我們不需要用global關(guān)鍵字去聲明的(因?yàn)閷?duì)象的內(nèi)存地址不會(huì)改變)

          4、代碼演示

          c=3#c為全局變量,可以被所有函數(shù)調(diào)用

           a=2

           def Test():

           b=2#b為局部變量,只能在函數(shù)內(nèi)被調(diào)用

           global a#局部變量變?yōu)槿肿兞?/p>

           a=4

           print('{}'.format(a))

           pass 

          def

           Test2():

           c=4

           print('{}'.format(c))

           pass Test2()

           print(c)#c沒有發(fā)生改變說明全局變量在函數(shù)中無法修改

           Test()

           print(a)#a發(fā)生了改變說明聲明全局變量 后才可以修改

           # 可變類型列表,字典 dict list,可以在函數(shù)中修改

           listA=[]

           print(type(listA))

           def demoList():

           listA.append('python')#向空列表里面添加數(shù)據(jù)

           pass

           demoList() print(listA)#發(fā)現(xiàn)輸出數(shù)據(jù)了

           # 不可變類型str tuple number【int、float、complex】

          二. 引用

          在python中,值是靠引用來傳遞來的,可以用id()查看一個(gè)對(duì)象的引用是否相同,id是值保存在內(nèi)存中那塊內(nèi)存地址的標(biāo)識(shí)。

          可變類型列表和字典:函數(shù)調(diào)用全局變量后地址不會(huì)變化

          代碼演示

          li=[]

           print('原來的地址{}'.format(id(li)))

           def Test(n):

           li.append([1,3,'chen'])

           print(id(n))

           print('內(nèi)部的{}'.format(n))

           pass

           print(id(li))

           Test(li)#輸出我們發(fā)現(xiàn)地址是一樣的

           print('外部的變量對(duì)象{}'.format(li))

           #不可變類型

           a=1

           def func(x):

           print('x剛開始的地址{}'.format(id(x)))

           x=2

           print('x的值修改之后地址{}'.format(id(x)))#改變類型后地址發(fā)生了變化

           print(x)

           pass

           #調(diào)用函數(shù)

           print('a的地址:{}'.format(id(a)))

           func(a)

           print(a)

          三. 匿名函數(shù)

          1、介紹:使用lambda關(guān)鍵字去創(chuàng)建函數(shù)

          沒有名字的函數(shù)

          2、匿名函數(shù)冒號(hào)后面的表達(dá)式有且只有一個(gè)

          注意:是表達(dá)式,而不是語句

          3、自帶return,而這個(gè)return的結(jié)果就是表達(dá)式計(jì)算后的結(jié)果

          4、缺點(diǎn):lambda只能是單個(gè)表達(dá)式,不是一個(gè)代碼塊,lambda的設(shè)計(jì)就是為了滿足簡(jiǎn)單函數(shù)的場(chǎng)景

          僅僅能封裝有限的邏輯,復(fù)雜邏輯實(shí)現(xiàn)不了,必須使用def來處理

          5、代碼演示

          M=lambda x,y:x+y

           print(M(2,3))#M相當(dāng)于一個(gè)調(diào)用函數(shù)

           #可以使用if-else語句,三元運(yùn)算


           Test=lambda x,y:x if x>y else y#意思就是調(diào)用x和y兩個(gè)變量,如果x大于y就取x否則取y

           print(Test(2,3))

           # 也可以單個(gè)參數(shù)使用


           Test=lambda x:(x**2) 

          print(Test(10))

          四. 遞歸

          簡(jiǎn)單理解:自己調(diào)用自己

          必須有一個(gè)明確的結(jié)束條件

          優(yōu)點(diǎn):邏輯簡(jiǎn)單、定義簡(jiǎn)單

          缺點(diǎn):容易導(dǎo)致棧溢出,內(nèi)存資源緊張,甚至內(nèi)存泄漏

          下列代碼是求階乘:以循環(huán)的方式去實(shí)現(xiàn)

          def jiecheng(n):

           result=1

           for item in range(1,n+1):# range左閉右開,所以要加一 result*=item

           pass

           return result

           print(jiecheng(5))

           # 遞歸的方式實(shí)現(xiàn)

           def factorial (n):

           if n == 1:

           return 1

           return n * factorial (n-1)

           print(factorial(5))

          ———————————————

          本文轉(zhuǎn)載:CSDN博主「神的孩子都在歌唱」的原創(chuàng)文章

          原文鏈接:

          https://blog.csdn.net/weixin_46654114/article/details/116379272


          一鍵三連~~

          關(guān)注小編喲~

          長(zhǎng)按關(guān)注


          瀏覽 41
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产盗摄9 | 日本黄视频网站 | 三级久久三级 | 亚洲综合免费观看高清 | 草逼福利|