python介紹函數(shù)

      網(wǎng)友投稿 621 2025-03-31

      什么是函數(shù)


      函數(shù)可以看做是一個容器,它吧可執(zhí)行的命令通過一定格式包裹起來,再起個名字。如果有程序調(diào)用這個函數(shù)的時候,就會觸發(fā)執(zhí)行函數(shù)中的代碼塊。

      兩個概念:

      面向過程式編程:根據(jù)業(yè)務邏輯從上到下實現(xiàn)功能,其往往用一長段代碼來實現(xiàn)指定功能,開發(fā)過程中最常見的操作就是粘貼復制,也就是將之前實現(xiàn)的代碼塊復制到現(xiàn)需功能處

      面向函數(shù)式編程:執(zhí)行多次重復操作的時候,可以用到函數(shù)式編程,可以減少代碼重復率

      定義函數(shù)格式:

      def 函數(shù)名(參數(shù)):

      函數(shù)體

      return()

      函數(shù)定義要點:

      def:表示函數(shù)的關鍵字

      函數(shù)名:函數(shù)的名稱,日后根據(jù)函數(shù)名調(diào)用函數(shù)

      函數(shù)體:函數(shù)中進行一系列的邏輯計算,如:發(fā)送郵件,計算出[11,22,38,888,2]中的最大數(shù)等….

      參數(shù):為函數(shù)體提供數(shù)據(jù)

      返回值:為函數(shù)執(zhí)行完畢后,可以調(diào)用者返回數(shù)據(jù)。

      執(zhí)行函數(shù):

      函數(shù)名() #括號內(nèi)不加內(nèi)容的話只執(zhí)行沒有參數(shù)的函數(shù)。

      函數(shù)名(a, b) #如果括號內(nèi)有參數(shù),則執(zhí)行有參數(shù)的函數(shù)

      例:

      def sam(形參):

      for i in range(1, 100, 2):

      print(i)

      return("dsa")

      a = sam(實參)

      函數(shù)的返回值:return

      在函數(shù)中如果執(zhí)行return了,函數(shù)下的代碼就不再執(zhí)行了

      函數(shù)是個功能塊,該功能塊到底執(zhí)行成功與否,需要通過返回值來告知調(diào)用者。,這個返回值可以定義為任意代碼,默認的返回值為None。

      def sam():

      for i in range(1, 100, 2):

      print(i)

      return("bac")

      a = sam()

      print(a)

      函數(shù)的參數(shù):

      def door(name2): #上面這個參數(shù)叫形式參數(shù)

      if name2 == "eric":

      print("開門")

      return 1

      else:

      print("不開")

      return 0

      num = 0

      while True:

      name = input("請輸入用戶名:")

      fh = door(name) #這個參數(shù)叫實際參數(shù)

      num += 1

      if fh == True:

      print("eric開門"+str(num)+"次" )

      函數(shù)可以上傳參數(shù),可以把參數(shù)作為判斷條件,參數(shù)可以是多個。

      參數(shù)分類

      普通參數(shù)

      def fc(a, b, c,):

      函數(shù)體

      return

      fc(1, 2, 3,)

      默認,實參與形參的位置是相互對應,數(shù)量一致。

      def fc(a, b, c,):

      函數(shù)體

      return

      fc(b=2, a=1, c=3,)

      也可以指定參數(shù)位置,這樣就不用按順序排列位置了。

      默認參數(shù)

      def fc(a, b, c=3): #添加默認函數(shù)時直接在形參后面添加函數(shù)

      函數(shù)體

      return

      fc(b=2, a=1, c=5) #如果默認函數(shù)位被指定函數(shù)后,就會使用指定了的函數(shù)

      注意:

      默認參數(shù)必須在形參的最后一個

      形參里面有幾個參數(shù),實參中也要有上傳幾個參數(shù),即使沒用。

      動態(tài)參數(shù)一

      把參數(shù)變成元組,根據(jù)順序一個一個寫入?yún)?shù),動態(tài)參數(shù)可以用一個形式參數(shù)表示多個不同類型的實際參數(shù)。

      def fc(*a): #配置動態(tài)參數(shù)只需在參數(shù)前面加一個星號“*”

      print(a, type(a))

      return

      fc("adfa", 123)

      動態(tài)參數(shù)二

      把參數(shù)變成字典,需要輸入鍵值對。

      def fc(**a):

      print(a, type(a))

      return

      fc(kaf="daf", dak="alfd")

      各種參數(shù)也可以組合起來使用,我們把這種參數(shù)稱之為萬能參數(shù)。

      def fc(a, *b, **c): #一個星的在前面,兩個星的在后面

      print(a, type(a))

      print(b, type(b))

      print(c, type(c))

      fc(12,14,15,k1=123,k2="bdc")

      12

      (14, 15)

      {'k1': 123, 'k2': 'bdc'}

      向函數(shù)中傳入,列表,元組。

      def fc(*a): #這里用帶一個星號的形參就可以了

      print(a, type(a))

      li = [22, 33, 44,]

      tup = (1, 3, 5,)

      fc(*li, *tup) #傳入變量名前面必須加星號

      (22, 33, 44, 1, 3, 5)

      這樣傳入的列表不會把整個列表作為元素

      傳入字典

      def fc(**a): #這里要用兩個星號的形參

      print(a, type(a))

      dic = {"k1":"adf","k2":123}

      fc(**dic) #實參也要用兩個星號

      {'k1': 'adf', 'k2': 123}

      局部變量和全局變量

      局部:一段語句,一段功能模塊,或者某個用戶的環(huán)境下

      局部變量:在局部環(huán)境創(chuàng)建的變量,只能在局部調(diào)用,修改。

      全局變量:將變量定義在代碼語句外,所有語句調(diào)用都可用。

      在局部環(huán)境改變?nèi)肿兞啃枰胓loble,globle 變量名

      規(guī)范:全局變量名用大寫,局部變量名用小寫。

      lambda表達式

      簡單if語句可以用三元運算表示,簡單函數(shù)也可以用lambda表達式表示。

      格式:

      變量名 = lambda 參數(shù),參數(shù) : 函數(shù)體(含返回值)

      例子:

      f4 = lambda a1,a2 : a1+a2

      d = f4(1,5)

      print(d)

      內(nèi)置函數(shù)

      abs #取絕對值

      all #每個元素都為真則為真

      0,None,空列表,空字符串,空字典和空元組都是假的,其他的都是真的。

      any #真要有一個人則為真

      ascii() #在對象類型中找 __repr__,獲取其返回值

      bool #對象轉換成布爾值

      bytes #字節(jié)

      bytearray #字節(jié)列表

      bytes("alilang", encoding="utf-8") 把字符轉換成字節(jié)

      chr() #接受數(shù)字把這個數(shù)字代表的字符表示出來,默認使用ascii 顯示:chr(112)

      ord() #得出字符用什么十進制的數(shù)字表示,一次只能接受一個參數(shù),默認使用ascii編碼顯示:ord("A")

      compile #把字符串編譯成可執(zhí)行代碼

      dir #尋找類里面提供的方法

      dict #字典

      divmod(10,3) #取整數(shù)和余數(shù)

      enumrate() #為可迭代的對象添加序號

      eval("1+2") #自動把str格式轉換成int運算返回格式為int,有返回值

      exec() #執(zhí)行py代碼,沒有返回值

      filter #過濾,循環(huán)可迭代的對象,獲取每一個參數(shù),函數(shù)(參數(shù))

      用法:

      def f1(x):

      if x > 22:

      return True

      else:

      return False

      ret = filter(f1, [11,22,33,44])

      for i in ret:

      print(i)

      通過lambda表達式也可以達到同樣的作用

      def f1(x):

      return x > 22

      ret = filter(lambda x: x > 22, [11,22,33,44])

      for i in ret:

      print(i)

      map() #map與filter函數(shù)用法差不多,作用是對每一個可迭代的對象加上指定的書。

      globals() #獲取當前代碼中的所有全局變量

      locals() #獲取當前代碼中所有的局部變量

      help() #查看幫助文檔

      id() #查看代碼在內(nèi)存的id號

      input #將輸入的內(nèi)容賦值給一個變量

      isinstance() #判斷某個對象是否是某個類創(chuàng)建的

      issubclass() #判斷對象是否為子類

      iter() #創(chuàng)建可迭代對象的next

      next() #取下一個對象,取的時候要增加next

      len() #取對象長度

      list() #列表

      max() #取對象中的最大值

      min() #取對象中的最小值

      pow() #求多少冪:i = pow(2, 10)

      reversed() #反轉

      round() #四舍五入

      slice() #取對象的索引

      sorted() #排序

      sum() #求和

      zip() #不同列里相同索引的對象組成同一個元組

      _import_ #帶入模塊

      十進制轉不同進制的數(shù),在參數(shù)內(nèi)輸入十進制數(shù)

      bin() 二進制

      hex() 十六進制

      oct() 八進制

      int() 十進制

      不同進制的數(shù)轉十進制,這是一種方式

      num = int("0b11", base=2) 二進制轉十進制

      num = int("0o11", base=8) 八進制轉十進制

      num = int("0xea", base=16) 十六進制轉十進制

      排序:sorted()

      排序只能排列統(tǒng)一的數(shù)據(jù)類型

      p = [1,11,88,2,10,66]

      print(sorted(p))

      [1, 2, 10, 11, 66, 88] #數(shù)字排序從小到大安數(shù)字的大小排序

      a = ["3","1","?","張","fd","何"]

      print(sorted(a))

      ['1', '3', '?', 'fd', '何', '張'] #字符排序,按照字符用十進制數(shù)表現(xiàn)的大小排序

      文件操作:open

      打開文件

      操作文件

      關閉文件

      基本模式

      open(文件名, 模式, 編碼)

      打開文件時,需要指定文件路徑和以何等方式打開文件,打開后,即可獲取該文件句柄,日后通過此文件句柄對該文件操作。用什么模式打開文件,就只能對文件做哪些操作

      模式

      r 只讀模式(默認)

      w 只寫模式(不可讀,不存在則創(chuàng)建,存在則清空內(nèi)容重新創(chuàng)建)

      x 只寫模式(也不可讀,存不存在則創(chuàng)建,存在則報錯)

      a 追加模式(不可讀,不存在則創(chuàng)建,存在則只追加內(nèi)容)

      只讀模式

      file = open('sha.txt','r') #文件名可以為是個路徑,默認為只讀模式

      r = file.read() #打開文件

      print(r)

      file.close() #關閉

      只寫模式

      file1 = open('ben.txt', 'w')

      a = file1.write('adixw123') #文件存在則覆蓋原有內(nèi)容,文件不存在則創(chuàng)建

      file1.close()

      x 只寫模式

      file2 = open('sha1.txt', 'x') #文件存在則報錯,不存在則創(chuàng)建

      file2.write("999999")

      file2.close()

      a 追加模式

      file3 = open('ben.txt', 'ra') #追加模式不可讀

      file3.write("aa445")

      file3.close()

      “b”表示以字節(jié)的方式操作

      直接用二進制方式打開,打開不用轉碼

      rb 或 r+b

      wb 或 w + b

      xb 或 w + b

      ab 或 a + b

      rb,以二進制方式打開

      rb:讀的時候是以字節(jié)的形式讀取的,寫入的時候也要通過二進制的方式寫入。

      file = open('ben.txt', 'rb',)

      a = file.read()

      file.close()

      print(str(a, encoding="utf-8")) #用utf-8格式,把輸出的二進制轉成字符顯示

      wb;xb;ab 三種寫入方式格式類似

      file = open('ben.txt', 'rb',)

      a = file.write(bytes("中國", encoding="utf-8"))

      file.close()

      python介紹函數(shù)

      ”+“表示可以同時讀寫某個文件

      r+ 讀寫(在末尾追加)

      w+ 寫讀

      x+ 寫讀

      a+ 寫讀

      tell() #獲取指針位置

      seek() #改變指針位置

      r+ :讀寫,先寫再讀

      file = open('ben.txt', 'r+', encoding=('utf-8')) #win默認用gdk格式,linux默認用utf-8格式

      d = file.read(1) #指定讀取一個字符

      print(file.tell())

      print(d)

      #file.write("中華")

      a = file.read(2) #指定讀取兩個字符

      file.write("花花") #寫入時指針就到了最后一位

      print(file.tell())

      file.close()

      print(a)

      w+ :讀寫,先清空,寫完以后才能讀

      file = open('ben.txt', 'w+', encoding='utf-8')

      file.write("中華")

      file.seek(0) #寫入以后指針會到最后一位,seek可以改變指針位置

      a = file.read()

      file.close()

      print(a)

      x+:與讀寫格式基本相同,有一點不同如果文件存在則報錯

      a+:與上面的讀寫差不多,可以追加數(shù)據(jù)

      file = open("ben.txt", "a+", encoding="utf-8")

      file.write("人民")

      file.seek(0)

      d = file.read()

      file.close()

      print(d)

      總結:r+:從后向后讀;w+:先清空寫完之后指針在最后;x+:如果沒有文件存在則報錯;a+:追加,寫完之后指針在最后。

      對文件進行操作

      def close(self, *args, **kwargs): #real signature unknown 關閉文件

      pass

      def fileno(self, *args, **kwargs): #real signature unknown 文件描述符

      pass

      def flush(self, *args, **kwargs): 將內(nèi)存的文件信息寫入硬盤

      #def isatty(self, *args, **kwargs): 判斷文件是否同意tty設備

      def read(self, *args, **kwargs): 讀取指定字符數(shù)據(jù)

      #def readable(self, *args, **kwargs): 是否可讀

      def readline(self, *args, **kwargs): 僅讀取一行數(shù)據(jù)

      def seek(self, *args, **kwargs): 指定文件中指針位置

      #def seekable(self, **args, **kwargs): 指針是否可操作

      def truncate(self, *args, **kwargs): 截取數(shù)據(jù),僅保留指針之前的數(shù)據(jù),依賴于指針

      #def writable(self, *args, **kwargs): 是否可寫

      def write(self, *args, **kwargs): 寫內(nèi)容

      讀取所有的數(shù)據(jù)(無論幾行幾列)

      f1 = open("ben.txt", "r+", encoding="utf-8")

      for line in f1:

      print(line)

      自動寫入:with

      每次打開一個文件都需要close才能進行下一步操作,如果用上with之后就可以不用每次都關閉了。

      格式:

      with open("ben.txt", "r", "#") as file:

      file.read()

      ......

      Python2.7之后,with同時打開兩個文件

      with open("ben.txt", "r") as file1, open("sha.txt", "r") as file2

      ......

      實例:

      同時打開兩個文件file1的數(shù)據(jù)復制到file2文件里面,可以進行一下操作。

      with open("ben.txt", "r+", encoding="utf-8") as file1, open("sha.txt", "w+", encoding="utf-8") as file2:

      for line in file1:

      file2.write(line)

      file2.seek(0)

      a = file2.read()

      print(a)

      Python 面向對象編程

      版權聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權內(nèi)容。

      版權聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權內(nèi)容。

      上一篇:Word中為表格設置底紋的操作技巧(word表格的底紋怎么設置)
      下一篇:拼音字母表怎么做?怎么用word制作拼音字母表
      相關文章
      亚洲精品无码永久在线观看你懂的| 亚洲JLZZJLZZ少妇| 亚洲爆乳AAA无码专区| 亚洲网址在线观看你懂的| 亚洲线精品一区二区三区影音先锋 | 亚洲精品V欧洲精品V日韩精品 | 亚洲午夜免费视频| 久久精品国产亚洲麻豆| 亚洲精品无码午夜福利中文字幕| 伊人婷婷综合缴情亚洲五月| 亚洲中文久久精品无码ww16| 亚洲精品美女久久久久99| 亚洲自偷自偷在线制服 | 中文字幕亚洲不卡在线亚瑟| 综合亚洲伊人午夜网| 亚洲色偷偷偷鲁综合| 久久亚洲综合色一区二区三区| 亚洲爆乳无码一区二区三区| 亚洲av综合色区| 久久精品a亚洲国产v高清不卡| 久久久久久久亚洲Av无码| 久久精品国产亚洲AV麻豆网站| 亚洲av无码一区二区乱子伦as| 亚洲人成网站在线在线观看| 亚洲国产成人精品无码一区二区| 亚洲免费精彩视频在线观看| 亚洲va中文字幕无码久久| 国产a v无码专区亚洲av| 亚洲五月丁香综合视频| 亚洲人成7777| 色偷偷亚洲女人天堂观看欧| 国产成人精品日本亚洲专区6| 色噜噜亚洲男人的天堂| 亚洲熟妇无码八V在线播放| 一本天堂ⅴ无码亚洲道久久| 亚洲日本中文字幕天天更新| 亚洲AV永久无码精品放毛片| 亚洲丁香婷婷综合久久| 国产精品亚洲专一区二区三区| 无码专区一va亚洲v专区在线| 337p日本欧洲亚洲大胆人人|