国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python-學習筆記 內(nèi)部函數(shù)

Gilbertat / 1934人閱讀

摘要:返回該函數(shù)的時候,攜帶了該內(nèi)部函數(shù)引用的外部函數(shù)參數(shù)和局部變量。每次返回的函數(shù)都是不同的對象的結(jié)果為內(nèi)部函數(shù)本身被返回時,所攜帶的參數(shù)或局部變量時那一刻的值例如在函數(shù)內(nèi)有循環(huán),內(nèi)部函數(shù)引用的循環(huán)變量。

內(nèi)部函數(shù)

Python可以在函數(shù)內(nèi)部再定義一個函數(shù)。這個定義的內(nèi)部函數(shù)可以引用外部函數(shù)的參數(shù)和局部變量。
事實上,內(nèi)部函數(shù)還可以在其中再定義內(nèi)部函數(shù),實現(xiàn)內(nèi)部函數(shù)多重嵌套。
例如:

def fun_outer(x, y):
    def fun_inner(z):
        def fun_inner_inner(h):
            return x+y+z+h
        return fun_inner_inner(100)
    return fun_inner(20)

print fun_outer(1, 2)
返回函數(shù)本身

函數(shù)本身也是一個對象。因此我們可以在函數(shù)內(nèi)將一個內(nèi)部函數(shù)返回。返回該函數(shù)的時候,攜帶了該內(nèi)部函數(shù)引用的外部函數(shù)參數(shù)和局部變量。

def fun_outer(x, y):
    def fun_inner(z):
        def fun_inner_inner(h):
            return x+y+z+h
        return fun_inner_inner(100)
    return fun_inner(20)

f =  fun_outer(1, 2)
print f

打印的結(jié)果為. 此時fun_outer(1, 2)得到的是一個函數(shù)對象,該函數(shù)對象攜帶了兩個參數(shù)值,即x=1y=2
如何讓它進一步計算呢,此時我們再執(zhí)行f(3)就會返回結(jié)果6

每次返回的函數(shù)都是不同的對象
f1 = fun_outer(1, 2)
f2 = fun_outer(1, 2)
print f1
print f2

print的結(jié)果為:



內(nèi)部函數(shù)本身被返回時,所攜帶的參數(shù)或局部變量時return那一刻的值

例如在函數(shù)內(nèi)有循環(huán),內(nèi)部函數(shù)引用的循環(huán)變量。

def fun_outer(x, y):
    funcs = []
    for i in range(0,3):
        def fun_inner():
            return x+y+i
        funcs.append(fun_inner)
    return funcs

func1, func2, func3 = fun_outer(1, 2)
print func1(),func2(),func3()

打印結(jié)果竟然三個函數(shù)都是5.其實這時候func_outer函數(shù)在返回一個函數(shù)列表的時候,i已經(jīng)循環(huán)到2了。因此func1func2func3攜帶的i參數(shù)都已經(jīng)是2了。因此最終計算結(jié)果都是5.
如何實現(xiàn)在有循環(huán)變量的時候,返回的函數(shù)攜帶的變量都是循環(huán)當時的值呢?
方法是再創(chuàng)建一個函數(shù),用該函數(shù)的參數(shù)綁定循環(huán)變量當前的值,無論該循環(huán)變量后續(xù)如何更改,已綁定到函數(shù)參數(shù)的值不變.

def fun_outer(x, y):
    funcs = []
    for i in range(0,3):
        def fun_inner(c):
            def fun_inner_inner():
                return x+y+c
            return fun_inner_inner
        funcs.append(fun_inner(i))
    return funcs

func1, func2, func3 = fun_outer(1, 2)
print func1(),func2(),func3()

打印結(jié)果:3 4 5

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/38243.html

相關(guān)文章

  • python學習筆記之一(.py文件里輸入中文報錯)

    摘要:定義默認參數(shù)要牢記一點默認參數(shù)必須指向不變對象尾遞歸調(diào)用函數(shù)本身,但是的返回值不包含表達式。而尾指針相當于把常規(guī)的遞歸反過來,增加一層遞歸的同時釋放前一個遞歸指針,所以能夠始終保持只有一個棧幀在使用中。 教程 1、python大小寫敏感 如果字符串里面有很多字符都需要轉(zhuǎn)義,就需要加很多,為了簡化,Python還允許用r表示內(nèi)部的字符串默認不轉(zhuǎn)義 >>> print ...

    heartFollower 評論0 收藏0
  • Python 3 學習筆記之——變量作用域、模塊和包

    摘要:局部變量只能在其被聲明的函數(shù)內(nèi)部訪問,而全局變量可以在整個程序范圍內(nèi)訪問。調(diào)用函數(shù)時,所有在函數(shù)內(nèi)聲明的變量名稱都將被加入到作用域中。 1. 變量作用域 Python 中,程序的變量并不是在哪個位置都可以訪問的,訪問權(quán)限決定于這個變量是在哪里賦值的。變量的作用域決定了在哪一部分程序可以訪問哪個特定的變量名稱。Python 的作用域一共有4種,分別是: L (Local) 局部作用...

    lijinke666 評論0 收藏0
  • Python學習筆記

    摘要:數(shù)字和字符串,不能改變對象本身,只能改變引用的指向,稱為不可變數(shù)據(jù)對象。從開始,依次增加的值,直至等于或者大于將會輸出。該函數(shù)輸入姓名和各科的成績,輸出姓名和總共成績。表明該參數(shù)是關(guān)鍵字參數(shù),通常來講關(guān)鍵字參數(shù)是放在函數(shù)參數(shù)列表的最后。 基礎(chǔ) 局部變量與全局變量 函數(shù)中使用的變量是局部的 如果在外面的變量在函數(shù)中使用,需要加global關(guān)鍵字 APPLY = 100 # 全局變量 a ...

    anquan 評論0 收藏0
  • python學習筆記

    摘要:在循環(huán)外使用今天在練習一個題目求之內(nèi)的素數(shù)。表示從倒數(shù)第一個開始往前數(shù)如果是的話則表示從正數(shù)第一個到最后一個。同時,閉包要求外部函數(shù)的返回值是內(nèi)部函數(shù)的函數(shù)名。 18. random()的用法 #隨機整數(shù): >>> import random >>> random.randint(0,99) 21 #隨機選取0到100間的偶數(shù): >>> import random >>> rando...

    張漢慶 評論0 收藏0
  • Python 3 學習筆記之——面向?qū)ο?/b>

    摘要:類的介紹類用來描述具有相同的屬性和方法的對象的集合。類變量類變量在整個實例化的對象中是公用的。類的定義語法格式如下類有一個名為的特殊方法,也即是構(gòu)造函數(shù),該方法會在定義對象的時候自動調(diào)用,可以通過參數(shù)傳遞來對類的實例進行設(shè)定。 1. 類的介紹 類(Class) 用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例,類是對象的抽象。 ...

    yzzz 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<