<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] > 生成器:generator > 通過列表?成式, 我們可以直接創建?個列表。 但是, 受到內存限制, 列表容量肯定是有限的。 ?且, 創建?個包含100萬個元素的列表, 不僅占?很?的存儲空間, 如果我們僅僅需要訪問前??個元素, 那后?絕?多數元素占?的空間都??浪費了。 所以, 如果列表元素可以按照某種算法推算出來, 那我們是否可以在循環的過程中不斷推算出后續的元素呢? 這樣就不必創建完整的list, 從?節省?量的空間。簡單來說,Python的生成器是一個返回可以迭代對象的函數。 ### 1. 生成器 ### 1.1 列表生成式的[]改成() ~~~ >>> x = range(0,9) >>> type(x) <class 'range'> >>> y = [i for i in x ] # 列表生成式 >>> type(y) <class 'list'> >>> y [0, 1, 2, 3, 4, 5, 6, 7, 8] >>> z = (i for i in x ) # 列表生成器 >>> type(z) <class 'generator'> >>> z >>> <generator object <genexpr> at 0x00000000021B9258> ~~~ ### 1.2 生成器函數 python 的生成器是一個可以重新啟動的函數,你可以用yield來實現重新啟動的功能.通過yield,這個函數就變成了一個生成器函數,它會返回一個迭帶器,并可以將一個函數分成一系列的步驟來運行.迭帶器的每一個循環都會重啟這個函數,**這個函數會繼續運行直到遇到下一個yield.** **.重啟發生器的代碼可以通過send 方法來獲得這個值,將值發送給yield處的變量** > 1. 生成器函數包含一個或者多個yield > 2. 當調用生成器函數時,函數將返回一個對象,但是不會立刻向下執行 > 3. 像__iter__()和__next__()方法等是自動實現的,所以我們可以通過next()方法對對象進行迭代 > 4. 一旦函數被yield,函數會暫停,控制權返回調用者 > 5. 局部變量和它們的狀態會被保存,直到下一次調用 > 6. 函數終止的時候,StopIteraion會被自動拋出 ~~~ import time # 簡單的生成器函數 def my_gen(): n=1 print("first") # yield區域 yield n # 迭代一次,把值返回后,程序停在這里 print("停在這里了?1") n+=1 print("second") yield n # 迭代一次,返回值后程序停在這里 print("停在這里了?2") n+=1 print("third") yield n a=my_gen() print("next method:") # 每次調用a的時候,函數都從之前保存的狀態執行 print(next(a)) time.sleep(1) print(next(a)) time.sleep(1) print(next(a)) time.sleep(1) print("for loop:") # 與調用next等價的 b=my_gen() for elem in my_gen(): print(elem) ~~~ ### 2. callable 英文文檔: callable(object)   Return True if the object argument appears callable, False if not. If this returns true, it is still possible that a call fails, but if it is false, calling object will never succeed. Note that classes are callable (calling a class returns a new instance); instances are callable if their class has a __call__() method. **2. 可調用對象,在實際調用也可能調用失敗;但是不可調用對象,調用肯定不成功。** #### 2.1 類對象 **類對象都是可被調用對象** ~~~ >>> class A: #定義類A pass >>> callable(A) #類A是可調用對象 True ~~~ #### 2.2 類的實例對象 **類的實例對象是否可調用對象,取決于類是否定義了__call__方法。** ~~~ >>> a = A() #調用類A >>> callable(a) #實例a不可調用 False >>> a() #調用實例a失敗 Traceback (most recent call last): File "<pyshell#31>", line 1, in <module> a() TypeError: 'A' object is not callable >>> class B: #定義類B def __call__(self): print('instances are callable now.') >>> callable(B) #類B是可調用對象 True >>> b = B() #調用類B >>> callable(b) #實例b是可調用對象 True >>> b() #調用實例b成功 instances are callable now. ~~~ #### 2.3 函數 **函數必須是可調用的,要不然要函數干啥,其中當然包括匿名函數(lamda表達式)** ~~~ >>> tag_func = lambda x: x in tags >>> callable(tag_func) True ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看