<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ù) 變量,引用,匿名,遞歸

          共 2077字,需瀏覽 5分鐘

           ·

          2021-05-23 16:02

          一. 局部和全局變量

          1、局部變量

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

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

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

          3、突發(fā)情況

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

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

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

          4、代碼演示

          c=3#c為全局變量,可以被所有函數(shù)調(diào)用 a=2 def Test(): b=2#b為局部變量,只能在函數(shù)內(nèi)被調(diào)用 global a#局部變量變?yōu)槿肿兞?/span> 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()查看一個對象的引用是否相同,id是值保存在內(nèi)存中那塊內(nèi)存地址的標(biāo)識。

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

          代碼演示

          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('外部的變量對象{}'.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ù)冒號后面的表達式有且只有一個

          注意:是表達式,而不是語句

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

          4、缺點:lambda只能是單個表達式,不是一個代碼塊,lambda的設(shè)計就是為了滿足簡單函數(shù)的場景

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

          5、代碼演示

          M=lambda x,y:x+y print(M(2,3))#M相當(dāng)于一個調(diào)用函數(shù) #可以使用if-else語句,三元運算

          Test=lambda x,y:x if x>y else y#意思就是調(diào)用x和y兩個變量,如果x大于y就取x否則取y print(Test(2,3)) # 也可以單個參數(shù)使用

          Test=lambda x:(x**2) print(Test(10))

          四. 遞歸

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

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

          優(yōu)點:邏輯簡單、定義簡單

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

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

          def jiecheng(n): result=1 for item in range(1,n+1):# range左閉右開,所以要加一 result*=item pass return result print(jiecheng(5)) # 遞歸的方式實現(xiàn) def factorial (n): if n == 1: return 1 return n * factorial (n-1) print(factorial(5))


          原文鏈接:

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

          文章轉(zhuǎn)載:Python編程學(xué)習(xí)圈

          (版權(quán)歸原作者所有,侵刪)


          點擊下方“閱讀原文”查看更多

          瀏覽 37
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  欧美一级看片a免费观看 | 国模精品 | 亚洲欧美精品 | a国产| 大香蕉免费网站 |