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

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

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

      三、Python基礎(chǔ)之函數(shù)

      函數(shù)

      為實現(xiàn)代碼的重復(fù)利用,對實現(xiàn)某一功能的代碼進行封裝以實現(xiàn)代碼抽象,方便重復(fù)調(diào)用
      python常用內(nèi)置函數(shù)在builtins.py中

      print() # 輸出
      type() # 返回類型
      id() # 返回內(nèi)存地址
      input() # 輸入
      len() # 返回長度
      open() # 打開文件
      round() #返回浮點數(shù)x的四舍五入值
      abs() # 取絕對值
      
      函數(shù)調(diào)用

      在Python中調(diào)用一個函數(shù),需要知道這個函數(shù)的名稱和傳入?yún)?shù)

      a1 = abs(-1)
      print(a1) # 1
       
      a2 = abs(-1,-2)
      print(a2)  # TypeError: abs() takes exactly one argument (2 given)
      
      a3 = abs('a')
      print(a3)  # TypeError: bad operand type for abs(): 'str'
      '''
      函數(shù)名其實就是指向一個函數(shù)對象的引用,完全可以把函數(shù)名賦給一個變量,相當(dāng)于給這個函數(shù)起了一個“別名”
      '''
      a4 = abs # 變量a4指向abs函數(shù)
      print(a4) # <built-in function abs>
      print(a4(-1)) # 1
      

      調(diào)用函數(shù)的時候,如果傳入的參數(shù)數(shù)量不對,會報TypeError的錯誤,并且Python會明確地告訴你:abs()有且僅有1個參數(shù),但給出了兩個;
      如果傳入的參數(shù)數(shù)量是對的,但參數(shù)類型不能被函數(shù)所接受,也會報TypeError的錯誤,并且給出錯誤信息:str是錯誤的參數(shù)類型;

      自定義一個函數(shù)

      Python中定義一個函數(shù),使用 def 語句,def+函數(shù)名+(參數(shù))+: ,通過語句塊縮進來編寫函數(shù)體,通過 return 來返回值

      def add(x,y):
          sum = x + y
          return sum
      
      a = add(2,3)
      print(a)  # 5
      
      def add(x,y):
          sum = x + y
      
      a = add(2,3)
      print(a) # None
      

      注:函數(shù)需要return來把數(shù)據(jù)返回給外部調(diào)用,如果不寫return,函數(shù)默認return None
      函數(shù)在內(nèi)部執(zhí)行語句時,一旦執(zhí)行到return,函數(shù)就執(zhí)行完畢并把結(jié)果返回,即使return下面有同樣縮進的語句塊,但并不會執(zhí)行

      def add(x,y):
          sum = x + y
          return sum
      	print("這是函數(shù)中return后的語句") # 在調(diào)用函數(shù)時,該print語句并不會被執(zhí)行 
          
      
      空函數(shù)

      有確定的 def+函數(shù)名+(參數(shù))+: ,在函數(shù)體中用 pass 代替實際的代碼語句

      def func():
          pass	# pass語句什么都不做,實際上 pass 通常作為代碼的點位符,在程序框架設(shè)計中常用
      
      返回多個值

      函數(shù)通過 return 返回單個值,同樣也可返回多個值

      def names(x,y):
          name_1 = x
          name_2 = y
          return name_1, name_2
      
      n = names('Jack','Flack')
      print(n)  # 返回('Jack', 'Flack')
      print(type(n)) # 返回類型 <class 'tuple'>
      

      Python中函數(shù)return多個值時,返回類型為 tuple(元祖),tuple中包含多個值

      任務(wù):

      定義一個函數(shù),傳入?yún)?shù)為一個list, l1 = [1,2,3,4,5,6......n],對這個list 按 12+22+32.+....+n2 累加,返回這個累加值。

      def sum(n):
          sum = 0
          for each in range(1,n+1):
              sum = sum+each*each
          return sum
      
      if __name__ == '__main__':
          total = sum(100)
          print(total)
      
      函數(shù)的參數(shù)

      Python函數(shù)的定義比較靈活,除正常定義必選參數(shù)外,還可以使用默認參數(shù)、可變參數(shù)和關(guān)鍵字參數(shù),在處理復(fù)雜參數(shù)的同時,方便簡化調(diào)用

      '''定義一個函數(shù),實現(xiàn)x2+1的計算'''
      def formula(x):
          return x*x+1
      

      對于函數(shù) formula(x) ,參數(shù) x 就是一個位置參數(shù),當(dāng)我們調(diào)用 func函數(shù)時,就必須傳入并且只傳入一個參數(shù) x

      a1 = formula(3)  # 參數(shù)傳入3,等同于x=3
      print(a1) # 10
      a2 = formula(x=4)
      print(a2) # 17
      

      現(xiàn)在如果要通過函數(shù)來實現(xiàn) x2+ y,在formula的參數(shù)中就需要傳入x, y兩個參數(shù)

      '''定義一個函數(shù),實現(xiàn)x2+y的計算'''
      def formula(x,y):
          return x*x+y
      
      a3 = formula(3,2) # 調(diào)用formula函數(shù)時,傳入的參數(shù)為3和2,按照位置相當(dāng)于x=3,y=2,結(jié)果為11
      a4 = formula(2,3) # 調(diào)用formula函數(shù)時,傳入的參數(shù)為2和3,按照位置相當(dāng)于x=2,y=3,結(jié)果為7
      

      傳參時按照參數(shù)位置填入對應(yīng)參數(shù),就屬于位置參數(shù)

      默認參數(shù)

      根據(jù) formula函數(shù),如果實際工作中,這個函數(shù)更多的是用來計算 x2+1,但我們也需要這個函數(shù)能計算 x2+y,為了簡化代碼調(diào)用,可以給 y 指定一個默認參數(shù) y=1

      def formula(x,y=1):
          return x*x+y
      
      a5 = formula(3) # 調(diào)用formula函數(shù)時,雖然只傳入的參數(shù)x=3,但定義函數(shù)時默認y=1,等價于formula(3,1)所以結(jié)果為10
      

      從上面例子可以看到,默認參數(shù)可以簡化函數(shù)的調(diào)用
      需要注意:定義函數(shù)時,必選參數(shù)放前,默認參數(shù)放后

      def formula(x=3,y):  # SyntaxError: non-default argument follows default argument
          return x*x+y
      

      解釋器會報錯:SyntaxError: non-default argument follows default argument

      可變參數(shù)

      例:當(dāng)我們需要定義一個函數(shù),實現(xiàn)a2+b2+c2+d2.......+n2,n為任意數(shù)

      def formula(*numbers):  # *numbers為可變參數(shù)(numbers類型為元祖,用于接收任意個傳入的參數(shù)),即調(diào)用該formula函數(shù)時,可傳入任意數(shù)量參數(shù)
          sum = 0
          print(type(numbers),numbers)  # <class 'tuple'>  numbers類型為元祖
          for i in numbers:
              sum += i*i
          return sum
      
      a6 = formula(1)  # 此時可變參數(shù)numbers接收的參數(shù)是1,numbers = (1,),結(jié)果為1
      a7 = formula(1,2,3) # 此時可變參數(shù)numbers接收的參數(shù)是1,2,3,numbers=(1,2,3),結(jié)果為14
      

      如果需要傳入的參數(shù)是一個list或tuple,可通過*+參數(shù)來對list或tuple解包
      n = [1,2,3,4]
      a8 = formula(*n) # *n作用是把n中的元素全部取出,放入numbers元祖中,等價于formula(1,2,3,4)

      通過 *n 把 n這個list中所有元素解包后作為可變參數(shù)傳入函數(shù),是一種常用方法

      關(guān)鍵字參數(shù)

      關(guān)鍵字參數(shù)允許傳入0個或任意個帶參數(shù)名的參數(shù),這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部以字典的形式存儲

      '''定義一個函數(shù),存儲學(xué)生信息'''
      def student_info(name, age, **kw):
          student_name = name
          student_age = age
          key_values = kw           # **kw是以字典類型來存儲傳入的關(guān)鍵字參數(shù)
          print("key_values類型:",type(key_values))
          print(student_name, student_age, key_values)
          
      a9 = student_info('Jie',18)  # key_values類型: <class 'dict'>
      							   Jie 18 {}	
          
      a10 = student_info('Jie',18,city='Shanghai',country='China') 
      # key_values類型: <class 'dict'>
      # Jie 18 {'city': 'Shanghai', 'country': 'China'}
      

      把一個已聲明的字典作為關(guān)鍵字參數(shù)傳入 student_info函數(shù),可通過 **+變量名 實現(xiàn)

      more_info = {'city': 'Shanghai', 'country': 'China'}
      a11 = student_info('Jie',18,\*\*more_info) 
      

      **more_info作用是把字典more_info中的key:value解包后作為關(guān)鍵字參數(shù)以字典形式存入kw中
      注意:**more_info 只是對more_info拷貝,因此在函數(shù)內(nèi)更改這個more_info是不會對原來的more_info產(chǎn)生影響的

      參數(shù)組合

      在Python中定義函數(shù)時,可以用必選參數(shù)、默認參數(shù)、可變參數(shù)、關(guān)鍵字參數(shù),組合使用
      參數(shù)定義的順序,位置參數(shù)-可變參數(shù)-默認參數(shù)-可變關(guān)鍵字參數(shù)

      def func_1(a,b,*args,c=3,**kw):
          print(f"參數(shù)a={a},參數(shù)b=,可變參數(shù)args={args},參數(shù)c={c},關(guān)鍵字參數(shù)kw={kw}")
      a12 = func_1(1,2)  # 參數(shù)a=1,參數(shù)b=2,參數(shù)c=3,可變參數(shù)args=(),關(guān)鍵字參數(shù)kw={}
      a13 = func_1(1,2,4,'A','B',k='D',v='E') 
      # 參數(shù)a=1,參數(shù)b=2,參數(shù)c=4,可變參數(shù)args=('A','B'),關(guān)鍵字參數(shù)kw={'k': 'D', 'v': 'E'}
      
      小結(jié):

      1、Python函數(shù)定義中參數(shù)形態(tài)比較靈活,可以傳入復(fù)雜的參數(shù),又方便簡單調(diào)用;
      2、默認參數(shù)不能是可變對象(List),可變對象引發(fā)程序邏輯錯誤;
      3、可變參數(shù) *args,接收一個tuple;
      4、可變關(guān)鍵字參數(shù) **kw, 接收一個dict;
      5、可變參數(shù)可直接傳入:func(1,2,3),又可以通過list或tuple,再通過*解包的方式傳入:func(*(1,2,3));
      6、關(guān)鍵字參數(shù)可直接傳入:func(x=1,y=2),又可以通過dict,經(jīng)過**解包方式傳入:func(**{'k'=1,'v'=1};
      7、參數(shù)組合時,參數(shù)定義順序:位置參數(shù)-可變參數(shù)-默認參數(shù)-可變關(guān)鍵字參數(shù)(同學(xué)們注意下基于python參數(shù)特性,文檔此處有修改)

      posted @ 2021-11-16 21:33  淡定的人參果  閱讀(96)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 成人无码视频在线观看免费播放| 国产午夜福利不卡在线观看| 一级女性全黄久久片免费| 日韩精品av一区二区三区| 亚在线观看免费视频入口| 国产精品国三级国产av| 白玉县| 久久人与动人物a级毛片| 日韩久久久久久中文人妻| 成人午夜av在线播放| 精品国产一区二区三区性色| 中文字幕乱码中文乱码毛片 | 最新日韩精品中文字幕| 国产二区三区不卡免费| 九九热久久只有精品2| 精品国产乱子伦一区二区三区| 国产欧美另类久久久精品不卡| 国产午夜福利免费入口| 国产性色的免费视频网站 | 强开少妇嫩苞又嫩又紧九色| 长治县| 国产美女裸身网站免费观看视频 | 亚洲欧美日韩在线不卡| 91亚洲国产三上悠亚在线播放| 日本内射精品一区二区视频| 亚洲高潮喷水无码AV电影| 国产中文字幕在线精品| 日本亚洲一区二区精品久久| 337p粉嫩大胆噜噜噜| 国产三级精品三级在线区| 欧洲亚洲国内老熟女超碰| 粉嫩小泬无遮挡久久久久久| 人妻日韩人妻中文字幕| 亚洲午夜性猛春交xxxx| 亚洲精品久荜中文字幕| 亚洲青青草视频在线播放| 久久成人伊人欧洲精品| 精品亚洲欧美无人区乱码| 日韩黄色av一区二区三区| 亚洲一区久久蜜臀av| 新郑市|