<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] ## 嵌套函數 嵌套函數即在一個函數中調用另外一個函數 * 案例 ``` name = "Alex" def change_name(): name = "Alex2" def change_name2(): name = "Alex3" print("第3層打印", name) change_name2() # 調用內層函數 print("第2層打印", name) change_name() print("最外層打印", name) ``` * 輸出: 第3層打印 Alex3 第2層打印 Alex2 最外層打印 Alex ## 高階函數 一個函數接收另一個函數作為參數,這種函數就稱之為高階函數。 只需滿足以下任意一個條件,即是高階函數 1. 接受一個或多個函數作為輸入 2. return 返回另外一個函數 * 案例 ``` def add(x,y,f): return f(x) + f(y) res = add(3,-6,abs) print(res) ``` ## 遞歸 ### 遞歸函數 在函數內部,可以調用其他函數。如果一個函數在內部調用自身本身,這個函數就是遞歸函數。 ```python def calc(n): print(n) if int(n/2) ==0: return n return calc(int(n/2)) calc(10) 輸出: 10 5 2 1 ``` ### 遞歸特性: 1. 必須有一個明確的結束條件 2. 每次進入更深一層遞歸時,問題規模相比上次遞歸都應有所減少 3. 遞歸效率不高,遞歸層次過多會導致棧溢出 遞歸案例:二分查找 ```python data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35] def binary_search(dataset,find_num): print(dataset) if len(dataset) >1: mid = int(len(dataset)/2) if dataset[mid] == find_num: #find it print("找到數字",dataset[mid]) elif dataset[mid] > find_num :# 找的數在mid左面 print("\033[31;1m找的數在mid[%s]左面\033[0m" % dataset[mid]) return binary_search(dataset[0:mid], find_num) else:# 找的數在mid右面 print("\033[32;1m找的數在mid[%s]右面\033[0m" % dataset[mid]) return binary_search(dataset[mid+1:],find_num) else: if dataset[0] == find_num: #find it print("找到數字啦",dataset[0]) else: print("沒的分了,要找的數字[%s]不在列表里" % find_num) binary_search(data,66) ``` ## 閉包 閉包,簡而言之,就是把在函數內部定義的函數和變量,通過return返回到函數外部,使其可以在函數外部被執行 閉包的意義:返回的函數對象,不僅僅是一個函數對象,在該函數外還包裹了一層作用域,這使得,該函數無論在何處調用,優先使用自己外層包裹的作用域 * 閉包案例 ``` def out(): list1=[] def inner(name): list1.append(len(list1)+1) print('%s list1=%s'%(name,list1)) return inner f=out() f('a') f('b') f1=out() f1('c') f('c') # 輸出------- a list1=[1] b list1=[1, 2] c list1=[1] c list1=[1, 2, 3] ``` ## Exec與Eval: * 相同點 eval和exec都可以將字符串解析為代碼 * 不同點 1. eval只能處理單行代碼,但是有返回值 2. exec能處理多行代碼,但沒有返回值 * 代碼示例1:處理解析單行字符串(都可以) ```python >>> ch1="print('hello 1+2')" >>> res1=eval(ch1) hello 1+2 >>> res2=exec(ch1) hello 1+2 ``` * 代碼示例2:處理解析多行字符串(eval報錯) ```python >>> ch1=''' ... print('hello 1+2') ... print('hello 4+2') ... ''' >>> res1=eval(ch1) #報錯 Traceback (most recent call last): File "<input>", line 1, in <module> File "<string>", line 3 print('hello 4+2') ^ SyntaxError: invalid syntax >>> res2=exec(ch1) hello 1+2 hello 4+2 ``` * 代碼示例3:返回值(exec沒有) ```python >>> print(eval("1+2+3")) 6 >>> print(exec("1+2+3")) None ```
                  <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>

                              哎呀哎呀视频在线观看