<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      xcq-bj

      導(dǎo)航

       

      DAY-04課堂筆記


      函數(shù)


      print() 在控制臺輸出
      input() 獲取控制臺輸?的內(nèi)容
      type() 獲取變量的數(shù)據(jù)類型
      len() 獲取容器的?度 (元素的個數(shù))
      range() ?成?個序列[0, n)
      #函數(shù)可以實現(xiàn)?個特定的功能
      

      我們學(xué)習(xí)??如何定義函數(shù), 實現(xiàn)特定的功能 ???

      函數(shù): 將多?代碼(可以實現(xiàn)?個特定的功能)放在?塊,并給它起 ?個名字. 在需要使?多?代碼的時候, 可以使?名字代替.

      定義函數(shù)的好處: 減少代碼冗余(重復(fù)的代碼不需要多次書寫),提 ?編程效率

      函數(shù)必須 先定義 后 調(diào)?
      

      定義和調(diào)用

      定義:

      def 函數(shù)名():
          函數(shù)封裝的代碼
          ……
      
      1. def 是英文 define 的縮寫
      2. 處在 def 縮進中的代碼 都屬于這個函數(shù)
      3. 函數(shù)名最好能夠表達函數(shù)內(nèi)部封裝的代碼的功能, 方便后續(xù)的獲取調(diào)用[見名知意]
      4. 函數(shù)名命名遵循標(biāo)識符命名規(guī)則: 字母, 數(shù)字, 下劃線, 不能以數(shù)字開頭, 不用使用系統(tǒng)關(guān)鍵字
      5. def 這?代碼的最后需要?個 冒號
      6. 函數(shù)定義  不會執(zhí)?函數(shù)中的代碼,想要執(zhí)?,需要調(diào)?
      

      調(diào)用:

      1. 只定義函數(shù), 不調(diào)用函數(shù), 函數(shù)永遠(yuǎn)不會被執(zhí)行
      2. 不能將 函數(shù)調(diào)用 放在 函數(shù)定義 的上方,否則將會出現(xiàn)錯誤
      
      函數(shù)名()
      

      演練:

      #需求:
      #1. 編寫一個打招呼 say_hello 的函數(shù),封裝三行打招呼的代碼
      #2. 在函數(shù)下方調(diào)用打招呼的代碼
      def say_hello():
          print("hello")
          print("hello")
          print("hello")
          
      say_hello()
      

      函數(shù)的文檔注釋

      1, 函數(shù)的?檔注釋,本質(zhì)就是注釋, 只不過作?和書寫位置有特定的要求
      2, 作?: 是對函數(shù)的作?和使??法進?說明, ?如 有哪些參數(shù), 返回值是什么
      3, 書寫位置: 在def 的下?,使? 三對雙引號來書寫
      ---------------------------------------------------------------------------------------------------------
      4, 查看
      4.1 在函數(shù)名上,使? 快捷鍵 Ctrl+Q 查看
      4.2 在函數(shù)名上,使? 快捷鍵 Ctrl+B 跳轉(zhuǎn)到函數(shù)定義的地?查看
      4.3 在函數(shù)名上, 按住 Ctrl 鍵,點擊函數(shù)名,跳轉(zhuǎn)到函數(shù)定義的地?查看
      

      函數(shù)參數(shù)的使用

      參數(shù): 在函數(shù)定義的時候,在括號中寫?變量,這個變量就稱為是函數(shù)的參數(shù). 
      形式參數(shù)(形參)在函數(shù)調(diào)?的時候,可以給定義時候的形參傳遞具體的數(shù)據(jù)值,供其使?. 
      實際參數(shù)(實參)即: 在函數(shù)調(diào)?的時候,會將函數(shù)的實參值傳遞給形參.
      好處: 可以讓函數(shù)更加的通?, 函數(shù)中的數(shù)據(jù)值不是固定的,是調(diào)?的時候,你傳遞的.
      使?場景: 判斷 函數(shù)中 數(shù)據(jù)值是不是固定不變的, 如果是變化的,就可以使?參數(shù)傳遞
      注意點: ?前書寫的函數(shù), 如果存在形參,必須傳遞相同個數(shù)的實參.
      
      def sun_2_num(a, b): # a, b 形參
       c = a + b
       print(c)
      sun_2_num(10, 20) # 10, 20 實參 10 給 a, 20 給 b
      sun_2_num(1, 2)
      sun_2_num(20, 39)
      

      函數(shù)的嵌套調(diào)?

      在一個函數(shù)中調(diào)用另一個函數(shù)。
      
      1,代碼從上到下執(zhí)行的
      2,函數(shù)定義不會指定函數(shù)中的代碼
      3, 函數(shù)調(diào)?會進?函數(shù)中執(zhí)?函數(shù)中的代碼
      4, 函數(shù)中的代碼執(zhí)?結(jié)束,會回到調(diào)?的地?繼續(xù)向下執(zhí)?
      
      # 1. 定義名為test01的函數(shù),打印當(dāng)前函數(shù)的名稱
      def test01():
       print(1)
       print('func01')
       print(2)
      
      
      # 2. 定義名為test02的函數(shù),打印當(dāng)前函數(shù)的名稱,并 調(diào)?
      test01函數(shù)
      def test02():
       print(3)
       print('func2')
       test01()
       print(4)
      
       
      print(5)
      test02()
      print(6)
      # 5 3 1 2 4 6
      

      函數(shù)的返回值

      返回值:函數(shù)執(zhí)行的結(jié)果
      print()--->None
      input()--->鍵盤輸入的類容,類型:字符串
      type() --->變量的數(shù)據(jù)類型
      len()  --->容器?度
      
      1, 在?個函數(shù)中,想要返回?個數(shù)據(jù)(想要有返回值), 需要使?return 關(guān)鍵字
      2, 為什么返回值? 在函數(shù)中可能通過各種代碼,得到的數(shù)據(jù)結(jié)果,想要在函數(shù)外部使?,就需要使?返回值
      3, 如果函數(shù)有返回值, ?般在調(diào)?的時候 會使?變量來接收(保存) 返回值, 以便后續(xù)使?
      4, return 關(guān)鍵字的作?,
       - 將?個數(shù)據(jù)值返回到調(diào)?的地?
       - 函數(shù)遇到 return 會結(jié)束函數(shù)的執(zhí)?
      5, return 關(guān)鍵字只能?在函數(shù)中
      6, 如果?個函數(shù) 沒有寫 return,可以認(rèn)為 返回值是 None
      
      # 設(shè)計?個函數(shù)?于獲取兩個數(shù)中的較?數(shù),數(shù)據(jù)來?于函數(shù)的
      
      def get_max(a, b):
          if a > b:
              return a
          else:
              return b    #函數(shù)代碼遇到return,函數(shù)結(jié)束
          print('我會執(zhí)?嗎, 不會執(zhí)?')    #不會執(zhí)行
      
      
      
      num = get_max(10, 20)
      print(num)           #20
      

      案例 -函數(shù)嵌套調(diào)用

      需求:
      1. 定義名為 input_username 的函數(shù), 獲取用戶輸入的用戶名
      2. 定義名為 input_password 的函數(shù), 獲取用戶輸入的密碼
      3. 定義名為 login 的函數(shù), 判斷獲取的用戶名和密碼信息
      4. 要求當(dāng)獲取的用戶名為:admin 并且密碼為: 123456 時, 輸出“登錄成功!”,否則提示“用戶名或密碼錯誤!”
      
      def input_username():
          username = input("請輸入用戶名:")
          return (username)
      
      
      def input_password():
          password = input("請輸入密碼:")
          return (password)
      
      
      def login():
          name = input_username()
          pwd = input_password()
          if name == "admin" and pwd == "123456":
              print("登錄成功!")
          else:
              print("用戶名或密碼錯誤!")
      
      
      login()
      

      模塊和包


      模塊

      1, 在Python 中, 每個代碼?件 都可以稱為是?個模塊
      2, 在模塊中 別?書寫好的功能(變量, 函數(shù), 類),我們可以拿來直接使?
      3, 我們??寫的代碼?件, 想要作為模塊讓別?使?, 你的代碼?件名(模塊名) 滿?標(biāo)識符的規(guī)則
      4, 想要使? 別?模塊中寫好的功能,需要先導(dǎo)?別?寫好的功能
      5, as 關(guān)鍵字 , 可以給模塊或者功能起別名  #from tools import sum2_num as su2  在下面就可以用su2代替
      

      模塊導(dǎo)?的?法

      ?式?

      import 模塊名 # 模塊名 就是代碼?件名 ,不要 .py
      # 使?其中的功能
      模塊名.功能名 # 功能可以是變量, 函數(shù) 和類
      # 多?于 導(dǎo)?系統(tǒng)中的常?的模塊和功能
      
      import random
      
      
      num = random.randint(1, 10)
      print(num)
      

      ?式?

      from 模塊名 import 功能名 # 導(dǎo)?指定的功能
      # 使?
      功能名()
      # ?式? 多?于導(dǎo)???書寫的,或者是第三?的模塊
      # 可以使?快捷鍵 Alt 回?
      

      from random import randint
      
      
      num = randint(1, 10)
      print(num)
      

      練習(xí)

      1. 定義?個模塊 tools.py , 在模塊中定義?個函數(shù)sum_2_num(), 可以對兩個數(shù)字求和
      2. 新定義?個代碼?件, 調(diào)? tools.py ?件中的sum_2_num() 函數(shù), 對 10 和 20 求和
      
      #tolls.py
      def sum2_num(a,b):
          """求a+b的和"""
          return (a+b)
      
      #新定義?個代碼?件
      from tools import sum2_num
      
      print(sum2_num(10,20))
      

      __ name__ 屬性

      1, 導(dǎo)?模塊的時候, 會執(zhí)?模塊中的代碼
      2, 作?: 如果在導(dǎo)?模塊的時候, 模塊中的部分代碼不想被執(zhí)?, 可以使? __name__ 來解決
      3, __name__ 變量,是 Python 解釋器內(nèi)置的變量(變量的值是?動維護的), 每個代碼?件中,都有這個變量
       當(dāng)被其他模塊導(dǎo)入后運行時, __name__ 屬性值為 模塊名
       當(dāng)在模塊內(nèi)運行時, __name__ 屬性值為 __main__
      
      快捷鍵:main 
      
      # tolls.py
      def sum2_num(a, b):
          """求a+b的和"""
          return (a + b)
      
      
      print(f"myname is {__name__}")      # 在模塊和包.py執(zhí)行時myname is tools
      if __name__ == '__main__':
          # 在這個 if 的縮進中書寫的代碼,導(dǎo)?的時候不會被執(zhí)?
          print(f"myname id {__name__}")   #myname is __main__
          print(sum2_num(100, 200))        #300
      

      #模塊和包.py
      from tools import sum2_num
      
      print(sum2_num(10,20))
      

      快捷鍵:main

      模塊的導(dǎo)?順序

      1, 在導(dǎo)?模塊的時候, 會先從代碼所在的?錄進?導(dǎo)?
      2, 如果沒有找到,會去 Python 系統(tǒng)的?錄查找導(dǎo)?
      3, 如果沒有找到, 報錯
      ----------------------------------------------------
      注意點: 我們??定義的代碼?件名字 不要和你導(dǎo)?的系統(tǒng)的模
      塊?件名?樣
      

      包: 將多個模塊放在?個?錄中集中管理, 
          并在這個?錄中創(chuàng)建?個 __init__.py ?件(可以什么都不寫), 就是?個包
      

      包的創(chuàng)建

      工程根目錄上鼠標(biāo)右鍵 -> New -> Python Package

      包的導(dǎo)?

      # ?式?
      import 包名.模塊名
      # 使?
      包名.模塊名.?具名
      
      
      # ?式?
      from 包名 import 模塊名
      # 使?
      模塊名.?具名
      
      
      # ?式三, 使?快捷鍵導(dǎo)包
      from 包名.模塊名 import ?具名
      # 直接使??具名
      ?具名
      

      包操作案例

      案例一:需求

      1. 新建一個 hm_message 的 包
      2. 在目錄下,新建兩個文件 send_message 和 receive_message
      3. 在 send_message 文件中定義一個 send 函數(shù)
      4. 在 receive_message 文件中定義一個 receive 函數(shù)
      5. 在外部定義一個 test_message 文件,編寫測試代碼調(diào)用發(fā)消息和收消息的函數(shù)
      

      代碼實現(xiàn):

      #send_message.py
      def send():
          print("發(fā)送消息")
      
      #receive_message.py
      def receive():
          print("接收消息")
      
      #test_message.py
      from hm_message.send_message import send
      from hm_message.receive_message import receive as  re
      
      send()
      re()
      


      案例二 需求

      1. 模擬開發(fā)人員實現(xiàn)登錄功能,定義一個函數(shù)能夠接收用戶輸入的用戶名、密碼、驗證碼,根據(jù)不同的測試數(shù)據(jù)返回不同的驗證結(jié)果
      2. 已知正確的登錄信息(用戶名:admin、密碼:123456、驗證碼:8888)
      3. 要求1:創(chuàng)建login_service.py模塊開發(fā)登錄功能代碼,并存放到service包中
      4. 要求2:創(chuàng)建test_login.py模塊開發(fā)測試代碼,并存放到script包中
      5. 要求3:至少測試3種測試場景
      

      答案一(自己寫的)

      #test_login.py
      def login():
          name = input("請輸入用戶名:")
          pwd = input("請輸入密碼:")
          code = input("請輸入驗證碼:")
          return [name, pwd, code]
      
      #login_service.py
      from script.test_login import login
      
      test = login()
      name, pwd, code = test
      
      if code == "8888":
          if name == "admin" and pwd == "123456":
              print("登錄成功!")
          else:
              print("用戶名賬號錯誤")
      else:
          print("驗證碼錯誤")
      

      答案二(老師的)

      #test_login.py
      from service.login_service import login
      
      login("admin","123456","8888")
      login("root","123456","8888")
      login("admin","123456","1234")
      login("admin","112233","8888")
      
      #login_service.py
      def login(username,password,code)
          if code == "8888":
              if username == "admin" and password == "123456":
                  print("登錄成功!")
              else:
                  print("用戶名賬號錯誤")
          else:
              print("驗證碼錯誤")
      

      DAY-05課堂筆記


      變量進階


      變量的進階
      - 引用 -- 變量 = 數(shù)據(jù)值 本質(zhì)(了解)
      - 可變類型與不可變類型(記住)
      - 局部變量和全局變量(理解掌握特點)
      
      range(n) #---> [0, n)
      range(start, end, step) #---> [start, end) 步長是 step,默認(rèn) 1
              
      range(1, 5, 2) # [1, 3]
      range(1, 101)  # 1-100
      

      引用的概念

      1, 定義變量的時候, 變量和數(shù)據(jù) 都會在內(nèi)存開辟空間
      2, 變量所對應(yīng)的內(nèi)存空間中存儲的是 數(shù)據(jù)所在內(nèi)存的地址 (平時理解為 將數(shù)據(jù)存儲到變量中即可)
      3. 變量中保存數(shù)據(jù)的地址,就稱為是引用
      4, Python 中所有數(shù)據(jù)的傳遞,傳遞的都是引用(即地址)
      5, 賦值運算符(=), 會改變變量的引用,  < 即只有 = 可以修改變量的引用  >
      6, 可以使用 id(變量) 函數(shù),查看變量的引用
      

      a = 1                        # 本質(zhì): 將數(shù)據(jù) 1 的地址保存到變量 a 中, 通常理解: 將 1 保存到 a
      b = a                        # 本質(zhì): 將 變量 a中的引用保存到變量 b中.  通常理解 將 a 的值給 b
      print(f"a: {a}, {id(a)}")
      print(f"b: {b}, {id(b)}")
      a = 2                        # 本質(zhì): 將數(shù)據(jù) 2 的地址保存到變量a中, 只是改變 a的引用,即改變 a的值, 沒有改變 b 的引用
      print(f"a: {a}, {id(a)}")    # 2
      print(f"b: {b}, {id(b)}")    # 1
      

      my_list = [1, 2, 3]
      my_list1 = my_list
      print(f'my_list :{my_list}, {id(my_list)}')
      print(f'my_list1:{my_list1}, {id(my_list1)}')
      my_list[1] = 10  # 修改 列表my_list 中下標(biāo)為 1 位置的引用
      print(f'my_list :{my_list}, {id(my_list)}')  # [1, 10, 3]
      print(f'my_list1:{my_list1}, {id(my_list1)}')  # [1, 10, 3]
      

      可變類型與不可變類型[記住]

      根據(jù)內(nèi)存中的數(shù)據(jù)是否允許修改,將數(shù)據(jù)類型分為可變類型與不可變類型
      簡單理解: 不使用等號,能不能修改數(shù)據(jù)值
      可變類型: 可以修改
      - 列表(list) list.append()
      - 字典(dict ) dict.pop()
      - 集合(set)
      不可變類型: 不允許修改
      - 數(shù)字類型(int , float , bool)
      - 字符串(str)
      - 元組(tuple)
      
      my_tuple = (1, 2, [10, 20]) # 元組中 存儲的 1 的地址, 2 的地址, 列表的地址
      print(my_tuple, id(my_tuple), id(my_tuple[-1]), id(my_tuple[-1][-1]))
      my_tuple[-1][-1] = 30       # 修改的列表中最后一個位置的引用
      print(my_tuple, id(my_tuple), id(my_tuple[-1]), id(my_tuple[-1][-1]))
      

      局部變量和全局變量

      根據(jù)變量定義的位置將變量分為局部變量和全局變量
      

      局部變量

      1, 在函數(shù)內(nèi)部定義的變量,稱為是局部變量
      2, 特點
      - 2.1 局部變量,只能在當(dāng)前函數(shù)內(nèi)部使用
      - 2.2 可以在不同函數(shù)內(nèi)定義名字相同的局部變量
      3, 生命周期(使用范圍)
      - 3.1 在函數(shù)執(zhí)行(調(diào)用)的時候被創(chuàng)建
      - 3.2 函數(shù)執(zhí)行結(jié)束被銷毀(刪除)
      4, 形參可以認(rèn)為是局部變量
      5, 如果想要在函數(shù)外部使用局部變量的值, 使用 return 返回
      
      def func1():
      num = 10 # 局部變量
      print(num)
      
      
      def func2():
      num = 20
      print(num)
      
      
      if __name__ == '__main__':
      func1() # 10
      func2() # 20
      func1() # 10
      

      全局變量

      1, 在函數(shù)外部定義的變量
      2, 特點
      - 2.1 全局變量 可以在任意函數(shù)內(nèi)訪問(讀取)
      - 2.2 想要在函數(shù)內(nèi)部修改全局變量的引用,需要使用 global 關(guān)鍵字聲明(使用 global 關(guān)鍵字可以聲明為全局變
      量)
      - 2.3 如果在函數(shù)內(nèi)部出現(xiàn)和全局變量名字相同的局部變量,在函數(shù)內(nèi)部使用的是局部變量
      3, 生命周期
      - 代碼執(zhí)行的時候 創(chuàng)建, 執(zhí)行結(jié)束銷毀
      
      函數(shù)中變量獲取順序:
      1. 首先查找函數(shù)內(nèi)部是否存在指定名稱的局部變量, 如果有直接使用
      2. 內(nèi)部如果沒有, 則查找函數(shù)外部是否存在指定名稱的全局變量, 如果有直接使用
      3. 如果還沒有, 則程序報錯
      
      # 定義全局變量
      g_num = 10
      
      
      def func_1():
          print(g_num)  # 使用全局變量
      
      
      def func_2():
          g_num = 20  # 定義局部變量
          print(g_num)
      
      
      def func_3():
          global g_num  # 聲明為全局變量
          g_num = 30
          print(g_num)
      
      
      if __name__ == '__main__':
          print(g_num)  # 10
          func_1()  # 10
          func_2()  # 20
          func_1()  # 10
          print(g_num)  # 10
          func_3()  # 30 修改了全局變量, 將全局變量的值改為30 了
      
          func_1()  # 30
          g_num = 100
          func_1()  # 100 修改全局變量的值
          func_2()  # 20 局部變量
          func_3()  # 30  修改了全局變量, 將全局變量的值改為30 了
          func_1()  # 30
      

      綜合應(yīng)用:<仔細(xì)看-列表>

      def func1():
      list1.append(10)
      
      
      def func2():
      list1 = [1, 1] # 定義局部變量, 不影響全局變量
      list1.append(0)
      
      
      def func3():
      global list1 # 全局變量
      list1.pop() # 刪除最后一個數(shù)據(jù)
      
      
      def func_5():
      list1.pop() # 用的全局變量,沒有改引用
      
      
      def func4():
      global list1 # 全局變量
      list1 = [1]
      
      
      
      if __name__ == '__main__':
          list1 = [1, 2]
          func1()
          print(list1) # ①[1, 2] ②[1, 2, 10](√) ③報錯
          func2()
          print(list1) # ① [1, 1, 0] ②[1, 2, 10](√) ③報錯
          func3()
          print(list1) # [1, 2]
          # func_5()
          # print(list1) # ②[1, 2] ①[1]對
          func4()
          print(list1) # [1]
      

      函數(shù)進階


      函數(shù)的進階
      - 函數(shù)返回多個數(shù)據(jù)
      - 默認(rèn)參數(shù),缺省參數(shù)(形參)
      - 不定長參數(shù),可變參數(shù),多值參數(shù)(形參)
      - 匿名函數(shù)(lambda 關(guān)鍵字)
      

      函數(shù)返回多個數(shù)據(jù)

      return 關(guān)鍵字兩個作用:
      1. 返回數(shù)據(jù)值
      2. 結(jié)束函數(shù)的運行
      函數(shù)中如果想要返回多個數(shù)據(jù)值, 一般是組成元組進行返回
      
      def calc(a, b):
          """返回兩個數(shù)的和及差"""
          return a + b, a - b
      
      
      result = calc(10, 20)
      print(result)
      

      函數(shù)傳參的方式

      是指如何將 實參的值傳遞給形參
      

      位置傳參

      在函數(shù)調(diào)用的時候按照 形參的順序?qū)崊⒌闹祩鬟f給形參
      

      關(guān)鍵字傳參

      在函數(shù)調(diào)用的時候, 指定將實參傳遞給哪個形參
      

      混合傳參

      1. 位置參數(shù)必須寫在關(guān)鍵字參數(shù)的前邊, 關(guān)鍵字參數(shù)必須放在位置參數(shù)的后邊
      2. 同一個形參只能接收一個實參值(不能即使用位置傳參和關(guān)鍵字傳參給同一個形參傳參)
      
      def show_info(name, age):
          print(f"name:{name}, age: {age}")
      
      
      # 位置傳參
      show_info('小明', 18)
      # 關(guān)鍵字傳參
      show_info(age=18, name='張三')
      # 混合使用
      show_info('李四', age=17)  #位置參數(shù)必須寫在關(guān)鍵字參數(shù)的前邊
      show_info(name='李四', 17)  #錯??
      

      缺省參數(shù)

      在函數(shù)定義的時候, 給形參一個默認(rèn)的數(shù)據(jù)值,這個參數(shù)就是缺省參數(shù)(默認(rèn)參數(shù))
      
      特點:
      在函數(shù)調(diào)用的時候, 缺省參數(shù)可以不用傳遞實參值.
      1. 如果不傳實參值, 使用的就是默認(rèn)值
      2. 如果傳遞實參值, 使用的就是傳遞的實參值
      
      ?缺省參數(shù)必須寫在 普通參數(shù)的后邊
      
      def show_info(name, age=18, sex='保密'):
          print(name, age, sex)
      
      
      # 調(diào)用
      show_info('張三', 18, '男')  # 張三 18 男
      show_info('李四')            # 李四 18 保密
      show_info('王五', 19)        # 王五 19 保密
      show_info('趙六', '男')      # 趙六 男 保密
      show_info('趙六', sex='男')  # 趙六 18 男
      

      多值參數(shù)(可變參數(shù)/不定長參數(shù))

      1, 如果一個函數(shù)能夠處理的參數(shù)個數(shù)是不確定的, 可以考慮使用多值參數(shù)
      2, 在普通的參數(shù)前邊加上一個 *, 這個參數(shù)就變?yōu)?多值參數(shù)
      3, 這個參數(shù)可以接收任意多個位置傳參的數(shù)據(jù), 類型 元組
      4, 這個形參一般寫作 args(arguments), 即 *args
      

      參數(shù)順序

      # 普通, 缺省, 多值
      def 函數(shù)名(普通, *args, 缺省):
          pass
      
      def func(*args):
          print(args)
      
          
      func()         # ()
      func(1, 2, 3)  # (1, 2, 3)
      

      案例

      需求:

      1. 定義一個函數(shù) sum_numbers,可以接收的 任意多個整數(shù)
      2. 功能要求:將傳遞的 所有數(shù)字累加 并且返回累加結(jié)果
      
      def sum_numbers(*args):
          s=sum(args)
          print(s)
      
          
      sum_numbers(1,2)
      sum_numbers(10,56,48,64,26)
      
      def my_sum(*args): # args 是元組
      	num = 0
          for i in args:
          	num += i
          return num
      
      
      sum_numbers(1,2)
      sum_numbers(10,56,48,64,26)
      

      元組的拆包

      元組拆包的方式:在元組變量前,增加一個 *
      
      def sum_numbers(*args):
      	num = 0
      	for n in args:
      		num += n
      	return num
          
          
      # 需要將一個元組變量傳遞給函數(shù)對應(yīng)的參數(shù)
      nums = (1, 2, 3)
      result = sum_numbers(*nums)
      print(f"result={result}")
      

      匿名函數(shù)

      匿名函數(shù):使用  lambda關(guān)鍵字  定義的表達式,稱為匿名函數(shù)
      

      ? 語法

      lambda 參數(shù), 參數(shù): 一行代碼 # 只能實現(xiàn)簡單的功能,只能寫一行代碼
      # 匿名函數(shù) 一般不直接調(diào)用, 作為函數(shù)的參數(shù)使用的
      
      func = lambda a , b : a+b
      
      print(10,20)
      

      ? 練習(xí)

      # 1, 定義匿名函數(shù), 參數(shù)為兩個整數(shù)數(shù)字, 求兩個數(shù)字的乘積
      lambda a, b: a * b
      
      # 2, 定義匿名函數(shù), 參數(shù)為一個字典, 返回字典中 鍵為 age 的值
      lambda x: x.get('age')
      lambda x: x['age']
      
      案例1-要求按照年齡傳智教育-黑馬程序員 對用戶信息數(shù)據(jù)進行排序
      
      user_list = [
      {'name': '張三', 'age': 22, 'title': '測試工程師'},
      {'name': '李四', 'age': 24, 'title': '開發(fā)工程師'},
      {'name': '王五', 'age': 21, 'title': '測試工程師'}
      ]
      
      # user_list.sort() # 只能對數(shù)字,字符串排序
      # 根據(jù)字典的 age 鍵 排序
      # 想要對列表中的字典排序,需要 key 形參來指定根據(jù)字典中的什么鍵排序
      # key 這個參數(shù)需要傳遞一個函數(shù),使用匿名函數(shù)
      # 列表.sort(key=lambda x: x['鍵'])
      user_list.sort(key=lambda x:x['age'])
      print(user_list)
      
      
      # def func(x):
      #     return x['age']
      # 
      # 
      # user_list.sort(key=func)
      # print(user_list)
      

      案例: 學(xué)生管理系統(tǒng)


      stu_list = []
      
      
      def make_student():
          while True:
              name=input("請輸入學(xué)生姓名:")
              if name=="no":
                  print("本次輸入結(jié)束!")
                  break
              age=input("請輸入學(xué)生年齡:")
              stu={"name":name,"age":age}
              stu_list.append(stu)
      
          return  stu_list
      
      
      def show_info():
          print('-' * 5 + "學(xué)生列表信息" + '-' * 5)
          j=1
          for stu in stu_list:
              print(f"{j}\t\t",end=" ")
              print(stu.get("name")+"\t\t", end=" ")
              print(stu.get("age"),)
          print('-' * 21)
      
      
      def get_counts():
          return len(stu_list)
      
      
      def search_student():
          name=input("請輸入學(xué)生姓名:")
          for stu in stu_list:
              if name==stu.get("name"):
                  print(f'姓名:{name}, 年齡: {stu.get("age")}')
                  return
              else:
                  pass
          print(f"對不起,名字叫【{name}】的學(xué)生不存在")
      
      if __name__ == '__main__':
          # 錄入三個學(xué)生信息
          # for i in range(3):
          #      stu = make_student()
          #      stu_list.append(stu) # 需要將單個學(xué)生添加到列表
          #
          # print(stu_list)
          # 展示學(xué)生信息
          make_student()
          show_info()
          # 獲取學(xué)生數(shù)量
          print('學(xué)生總數(shù)為: ', get_counts())
          #查詢-根據(jù)姓名
          search_student()
      
      posted on 2024-07-17 21:29  xcq_cm  閱讀(22)  評論(0)    收藏  舉報
       
      主站蜘蛛池模板: 亚洲另类无码一区二区三区| 国产亚洲精品自在久久| 国产午夜精品福利视频| 国产乱色熟女一二三四区| 人妻聚色窝窝人体WWW一区| 国产精品视频全国免费观看| 老子午夜精品无码| 一本色道久久综合亚洲精品| 秋霞电影院午夜无码免费视频| 曰韩精品无码一区二区三区视频| 在线日韩日本国产亚洲| 99久久免费精品国产色| 人妻18毛片A级毛片免费看| 国产精品区一区第一页| 亚洲国产精品日韩AV专区| 日韩日韩日韩日韩日韩熟女| 国产亚洲精品成人av在线| 国产色悠悠视频在线观看| 久久婷婷五月综合色99啪ak| 静安区| 国产小受被做到哭咬床单GV| 亚洲成A人片在线观看无码不卡| 国产高清亚洲一区亚洲二区| 午夜精品福利亚洲国产| 成人精品网一区二区三区| 国产精品中文av专线| 久久国产乱子伦免费精品| 欧洲人与动牲交α欧美精品| 国产成人亚洲精品狼色在线| 久久精品国产亚洲av热一区| 宅男噜噜噜66在线观看| 国精品午夜福利视频不卡| 日韩中文免费一区二区| 麻豆成人精品国产免费| 欧美三级中文字幕在线观看| 久久亚洲精精品中文字幕| 国产精品一区久久人人爽| 欧美成人精品一级在线观看| 久9re热视频这里只有精品免费| 日本国产精品第一页久久| 邻居少妇张开腿让我爽了一夜|