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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ### **函數小結:** 1. 概念:函數就是封裝整個代碼整體,是顯示某個功能的小工具 最大的概念是封裝,把代碼封裝到函數中 2. 使用 ①.定義函數:把代碼封裝到函數中 ②.調用函數:享受封裝的結果 3. 作用:提高開發效率,實現代碼重用。 4. 函數的調用順序: (1) 定義函數時,不會進入函數內部執行代碼 (2).調用函數時,才會進入函數內部執行代碼 (3). 調用函數完成后,回到函數調用的地方繼續向下執行 <br /> ### **函數的返回值:** 1. 作用: 1).返回值; 2).退出當前函數(導致 return下方的代碼不執行) 2. 格式: return返回結果 3. return可以將函數運行結果返回到函數調用的地方 4. 函數體中 return后面的代碼不再執行(可以使用 return提前終止函數的運行) 5. 函數體中 return后面沒有返回結果,但是函數調用地方偏偏需要返回結果 python解釋器會把None返回(什么都沒有,與 MySQL中NULL相似) <br /> ### **函數的嵌套調用小結:** 1. 函數中嵌套調用另一個函數 2. 舉例:demo01()函數中嵌套調用demo02() ①.先調用demo01()函數,先執行dem01()函數中的代碼 ②.在執行代碼中遇到嵌套調用demo02(),進入demo02()函數中執行代碼 ③.demo02()函數中代碼完畢后回到調用的地方繼續向下執行 ④.繼續執行demo01()中代碼,最后執行完畢后,回到調用demo01()函數的地方 <details> <summary>函數嵌套代碼.py</summary> ``` def demo02(): print("----demo02函數調用開始----") print("----demo02函數的中間執行過程----") print("----demo02函數調用結束----") def demo01(): print("----demo01函數調用開始----") demo02() print("----demo01函數的中間執行過程----") print("----demo01函數調用結束----") demo01() #運行結果: ----demo01函數調用開始---- ----demo02函數調用開始---- ----demo02函數的中間執行過程---- ----demo02函數調用結束---- ----demo01函數的中間執行過程---- ----demo01函數調用結束---- ``` </details> <br /> ### **模塊中的函數小結:** 1. 把 python文件當做一個模塊來使用,模塊是比函數更大的封裝,模塊中可以封裝多個函數 2. 原則上,任何一個 python文件都可以作為模塊,模塊名要符合標識符命名規范 3. 使用模塊 ①.導入模塊 import模塊名 ②.使用模塊中的工具 模塊名.函數名(參數) / 模塊名.變量名 4. 作用:把成熟穩定的代碼封裝到模塊中,供其他開發者使用,提高開發效率 5. 注意:被導入的模塊會被 Python解釋器從頭到尾掃描一遍(如果遇到可執行的代碼則直接執行) <br /> ### **變量的引用小結** 1. 變量和數據都是保存在內存中 2. 變量和數據是分開存儲的 3. 數據保存在內存中的某個位置,通過地址來標記 4. 變量中保存的是數據的地址,通過地址可以找到數據在內存中的位置 5. 把變量保存數據地址的過程稱為引用 6. id()函數可以查看變量或數據的內存地址 占位符: %d 十進制 %x 十六進制 7. 變量的重新賦值,修改的是變量中引用的數據地址 8. 結論:變量之間的賦值,本質是引用(地址)的傳遞 9. 結論:函數參數的傳遞,本質是引用的傳遞 10. 結論:函數返回值傳遞,本質也是引用的傳遞 <br /> ### **不可變數據類型:** 1. 概念:源內存空間中數據不允許修改 如果想要修改,只能開辟新內存空間,讓變量引用指向新內存空間數據的地址 分類: int float bool str tuple <br /> ### **可變數據類型:** 1. 概念:源內存空間中的數據可以修改 不需要開辟新內存空間,只要在源內存基礎上修改數據 分類: list dict ``` info_list = [10, 20] print(info_list) print(id(info_list)) print("-" * 30) info_list.append(300) print(info_list) print(id(info_list)) #運行結果: [10, 20] 4385775488 ------------------------------ [10, 20, 300] 4385775488 ``` 注意: 無論是對可變數據類型和不可變數據類型,重新賦值,都會改變變量的引用指向 判斷數據是否是可變數據類型,不是通過重新賦值語句實現,而是通過方法實現的。 <br /> ### **hash()函數:--------了解** 0. 是 Python內置的函數 1. 作用:用來提取數據的特征值(指紋) 相同的數據得到相同的結果 不相同的數據得到不同的結果 2. hash()函數只能作用于不可變數據類型 3. 字典的key值是通過hash()函數運算的 4. 所以字典的key值只能是不可變數據類型(除了列表和字典以外的數據類型) 字典的 value值可以是任意數據類型 <br /> ### **局部變量小結:** 1. 在函數內部定義的變量就是局部變量(作用范圍只能是當前函數內部) 2. 在函數外部無法直接訪問局部變量 3. 不同的函數中可以定義同名的局部變量 4. 局部變量的生命周期:從定義變量時開始,到函數運行結束 ``` def demo01(): # 在函數內部定義的變量就是局部變量(作用范圍只能是當前函數內部) num = 100 print("--1--num=%d, id(num)=%d" % (num, id(num))) def demo02(): # 不同的函數中可以定義同名的局部變量 num = 300 print("--2--num=%d, id(num)=%d" % (num, id(num))) demo01() demo02() ``` <br /> ### **全局變量:** 1. 在所有函數外邊定義的變量叫做全局變量 2. 作用:讓所有的函數都可以訪問到全局變量,作為所有函數通信的橋梁 3. 一般情況下,全局變量定義在所有函數的最上邊, 4. 為了和普通變量區分,添加前綴 g_ 或 gl_ 5. 修改全局變量需要使用 global聲明(告訴 Python解釋器,我修改的是全局變量) 6. 修改全局變量后,函數訪問的是修改后的全局變量值 7. 如果不加 global關鍵字,并沒有修改全局變量,定義一個和全局變量同名的局部變量 8. 在 global關鍵字聲明之前,不能訪問全局變量 <br /> ### **函數參數和返回值組合** 1. 無參數,無返回值 ? 比如:名片管理系統中 菜單顯示功能 2. 無參數,有返回值 ? 數據采集----采集的數據結果需要返回 3. 有參數,無返回值 ? 比如:名片管理系統中 操作名片函數 deal_card(item) 4. 有參數,有返回值 ? QQ登錄(微信登錄) <br /> ### **函數返回值進階:** 1. 函數可以返回多個數據 2. 借助容器返回容器(列表,元組,字典),一般情況使用元組返回多個數據 3. 使用元組返回多個數據時,小括號可以省略 4. 在函數調用地方,使用一個變量接收返回值(當前變量就是返回的數據類型) 5. 在函數調用地方使用多個變量接收拆分的數據,返回多少個數據就因該有多少個變量接收 ~~~ def func(): ? ?''' ? 當前函數返回多個數據 ? :return: ? ''' ? ?tmp = 27 ? ?wetness = 89.5 ? ?pm_25 = 120 ? ? ?return tmp, wetness, pm_25 ? ret = func() print(ret) print(type(ret)) ~~~ ``` ''' 1.有兩個整數變量 a = 6, b = 100 2.不使用其他變量,交換兩個變量的值 ''' a = 6 b = 100 # 方法1.使用臨時變量 ''' temp = a a = b b = temp print("a = %s" % a) print("b = %s" % b) ''' # 方法2.使用元祖 b, a = a, b print("a = %s" % a) print("b = %s" % b) ``` 結論: 1. 不可變數據類型做為函數參數,在函數內部對形參變量使用賦值語句,不會影響到實參變量 2. 可變數據類型做為函數參數,在函數內部對形參變量使用賦值語句,不會影響到實參變量 3. 不可變數據類型做為函數參數,在函數內部對形參變量使用方法,不會影響到實參變量 4. 可變數據類型做為函數參數,在函數內部對形參變量使用"方法"修改數據,會影響到實參變量 ### **eval() 函數小結:** eval()函數將字符串當做有效的表達式,進行計算 把字符串兩邊的雙引號去掉,雙引號中內容是什么 eval()函數返回的結果就是什么 <details> <summary>eval()函數的使用.py</summary> ``` # eval()函數的使用 def calc(): info = input("請輸入加減乘除混合運算式:") print(info) print(type(info)) print(eval(info)) calc() ``` </details> <br /> ### **缺省參數:** ~~~ 1.帶有默認值的參數就是缺省參數 2.調用函數時,沒有給缺省參數傳遞參數,則使用默認值 3.調用函數時,給缺省參數傳遞參數、則使用傳遞參數,不會使用默認值了 4.調用函數時,實參前面可以添加形參的變量名,形參的變量名=值 5.定義函數時,缺省參數(帶有默認值的參數)放在必須參數的后面 6.函數具有多個缺省參數時,調用時注意參數之間的順序,建議添加形參變量名 ~~~ <details> <summary>自定義函數帶有缺省參數.py</summary> ``` # 目標:自定義函數帶有缺省參數 # 定義函數 # 注意:缺省參數也是帶有默認值的參數 # name是必須參數 # 注意:缺省參數(帶有默認值的參數一定要放在 必須參數的后面) def func(name, age=20, position="學生"): print("name=%s" % name) print("age=%s" % age) print("position=%s" % position) # 調用函數 # 向缺省參數傳遞參數,使用的是傳遞的參數 func("張三", 30, "班長") # 不向缺省參數傳遞參數,使用的是默認值 func("張三") #向缺省參數傳參時,建議加上形參變量名,age=25 是關鍵字參數 func("張三", position="班長", age=25) ``` </details> <br /> ### **定義支持多值參數的函數** ~~~ *args接受多余的參數,以元組的格式保存 **kwargs接收關鍵字參數,以字典的格式保存 調用函數 name="張三"關鍵字參數 ~~~ <details> <summary>函數的多值參數.py</summary> ``` # 目標:探究函數的多值參數 # *args 用來接收多余的參數,以元組的格式保存 # **kwargs 用來接收多余的關鍵字參數,以字典的格式保存 def demo(num, *args, **kwargs): print(num) print(args) print(kwargs) demo(10) demo(10, 20) demo(10, 20, 30, 40, 50, name = "小明", age = 20) ``` </details> <br /> ### **多值參數:** ~~~ 多值參數: 1.定義函數時, args:用來接收多余參數,以元組的形式保存數據 ** kwargs:用來接收關鍵字參數,以字典的格式保存數據 定義函數時,*ags,* kwargs作為形參,功能是組包 2.調用函數時,name="小明",age=18 關鍵字參數 調用函數時,*args,**kwargs作為實參,功能是拆包(解包) ~~~ <details> <summary>多值參數拆包.py</summary> ``` # 目標:多值參數拆包 def test(a,b,*args,**kwargs): print(a) print(b) print(args) print(kwargs) def demo(a, b, *args, **kwargs): print(a) print(b) print(args) print(kwargs) print("-" * 30) print(a,b,args,kwargs) demo(10, 20, 30, 40, 50, name = "小明", age = 20) 打印結果: ---------------------------- 10 20 ((30, 40, 50, 60), {'name':'小明', 'age':20}) {} ``` </details> <br /> ### **匿名函數** ~~~ 1.匿名函數( lambda表達式) 2.作用:省略def 關鍵字定義函數的標準步驟,可以快速的定義功能簡單的函數 3.語法: lambda 參數 / 多個參數 : 表達式 ~~~ <details> <summary>匿名函數.py</summary> ``` ''' 匿名函數 概念:省略了d定義函數的標準步驟,可以定義功能簡單的函數 語法:1 ambda參數:表達式 說明:匿名函數又和1amb表達式 特點:匿名函數把表達式作為整個返回值進行返回 ''' # 定義匿名函數 不帶參數的匿名函數 # print(lambda: 100) ret = lambda : 100 print(ret) print(ret()) print((lambda: 100)()) # 定義匿名函數 帶一個參數的匿名函數 func = lambda x : x + 100 print(func) print(func(50)) print((lambda x: x + 100)(30)) # 定義匿名函數 帶兩個參數的匿名函數 func = lambda x, y : x + y print(func) ret = func(10, 20) print(ret) print((lambda x, y : x + y)(100, 200)) # 匿名函數作為函數的參數 def sum_num(a, b, opt): print("a=%d" % a) print("b=%d" % b) print("%d + %d = %d" % (a, b, opt(a, b))) sum_num(10, 20, lambda x, y : x + y) ``` </details> <br />
                  <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>

                              哎呀哎呀视频在线观看