日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python函數編程——嵌套&匿名&高階函數

系統 1850 0

Python函數編程——嵌套&匿名&高階函數

一、嵌套函數

函數里不僅可以寫代碼,還可以嵌套函數:

          
            name = "小猿圈"
def change():
    name = "小猿圈,自學編程"
    def change2():
        # global name  如果聲明了這句,下面的name改的是最外層的全局變層
        name = "小猿圈,自學編程不要錢" #這句注釋掉的話,下面name打印的是哪個值?
        print("第3層打印", name) 
    change2()  # 調用內層函數
    print("第2層打印", name)
change()
print("最外層打印", name)
          
        

輸出

          
            第3層打印 小猿圈,自學編程不要錢
第2層打印 小猿圈,自學編程
最外層打印 小猿圈
          
        

通過上面的例子,我們理解了,每個函數里的變量是互相獨立的,變量的查找順序也是從當前層依次往上層找。

問個哲學問題,這東西有什么用呢?哈,現在沒用,不解釋,長大后學了裝飾器你就知道有啥用了。

二、匿名函數

匿名函數就是不需要顯式的指定函數名

          
            #這段代碼
def calc(x,y):
    return x**y
print(calc(2,5))
#換成匿名函數
calc = lambda x,y:x**y
print(calc(2,5))
          
        

你也許會說,用上這個東西沒感覺有毛方便呀, 。。。。呵呵,如果是這么用,確實沒毛線改進,不過匿名函數主要是和其它函數搭配使用的呢,如下

          
            res = map(lambda x:x**2,[1,5,7,4,8])
for i in res:
    print(i)
          
        

輸出

          
            1
25
49
16
64
          
        

三、高階函數

變量可以指向函數,函數的參數能接收變量,那么一個函數就可以接收另一個函數作為參數,這種函數就稱之為高階函數。

          
            def get_abs(n):
    if n < 0 :
        n = int(str(n).strip("-"))
    return n
def add(x,y,f):
    return f(x) + f(y)
res = add(3,-6,get_abs)
print(res)
          
        

只需滿足以下任意一個條件,即是高階函數:

  • 接受一個或多個函數作為輸入。
  • return 返回另外一個函數。

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 江阴市| 高安市| 兴安县| 苏尼特左旗| 蓬莱市| 定襄县| 梅河口市| 长顺县| 德州市| 全椒县| 中超| 桂林市| 晴隆县| 昌江| 涞水县| 祁东县| 五河县| 萝北县| 江北区| 永福县| 黄梅县| 屏东市| 成都市| 扎囊县| 美姑县| 乌拉特中旗| 汾西县| 清新县| 南郑县| 乌拉特中旗| 香河县| 安龙县| 云南省| 兴隆县| 峡江县| 资阳市| 贵州省| 当雄县| 洪江市| 大姚县| 灵璧县|