Python函數、文件操作總結

      網友投稿 1120 2025-04-01

      Python函數、文件操作總結


      函數

      函數就是將一段具有獨立功能的代碼塊整合到一個整體并命名,在需要的位置==調用這個名稱==即可完成對應的需求。

      函數在開發過程中,可以更高效的實現代碼重用。

      函數的作用:封裝代碼,高效的代碼重用

      函數使用步驟

      定義函數

      def 函數名(): 代碼1 代碼2 ...

      調用函數

      函數名()

      函數的參數:函數調用的時候可以傳入真實數據,增大函數的使用的靈活性

      形參:函數定義時書寫的參數(非真實數據)

      實參:函數調用時書寫的參數(真實數據)

      函數的返回值

      作用:函數調用后,返回需要的計算結果

      寫法

      return 表達式

      函數的說明文檔

      作用:保存函數解釋說明的信息

      寫法

      def 函數名(): """ 函數說明文檔 """

      函數嵌套調用:一個函數內部嵌套調用另外一個函數

      函數定義

      定義函數

      def 函數名(參數): 代碼1 代碼2 ......

      調用函數

      函數名(參數)

      注意:

      1. 不同的需求,參數可有可無。 2. 在Python中,函數必須==先定義后使用==。

      具體例子

      使用函數,完成加法

      def sum_num(a, b): return a + b # 用result變量保存函數返回值 result = sum_num(1, 2) print(result)

      3

      函數說明文檔

      對于python當中許多內置的函數,可以使用help()來獲得函數的具體使用方法

      當然大家在平時寫函數的過程中,為了便于其他人員的使用,增加可讀性,也可以適當寫函數說明文檔

      定義函數的說明文檔

      def 函數名(參數): """ 說明文檔的位置 """ 代碼 ......

      查看函數的說明文檔

      help(函數名)

      help(print)

      Help on built-in function print in module builtins: print(...) print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream.

      使用help(函數名)就可以很容易看到print()當中的參數了

      def sum_num(a, b): """ 求和函數 """ return a + b help(sum_num)

      Help on function sum_num in module __main__: sum_num(a, b) 求和函數

      嵌套使用

      同時在python中函數也可以嵌套使用的

      def testB(): print('---- testB start----') print('這里是testB函數執行的代碼...(省略)...') print('---- testB end----') def testA(): print('---- testA start----') testB() print('---- testA end----') testA()

      ---- testA start---- ---- testB start---- 這里是testB函數執行的代碼...(省略)... ---- testB end---- ---- testA end----

      如果函數A中,調用了另外一個函數B,那么先把函數B中的任務都執行完畢之后才會回到上次 函數A執行的位置。

      變量作用域

      變量作用域指的是變量生效的范圍,主要分為兩類:==局部變量==和==全局變量==。

      局部變量

      所謂局部變量是定義在函數體內部的變量,即只在函數體內部生效。

      def testA(): a = 100 print(a) testA() # 100 print(a) # 報錯:name 'a' is not defined

      變量a是定義在testA函數內部的變量,在函數外部訪問則立即報錯。

      局部變量的作用:在函數體內部,臨時保存數據,即當函數調用完成后,則銷毀局部變量。

      全局變量

      所謂全局變量,指的是在函數體內、外都能生效的變量。

      思考:如果有一個數據,在函數A和函數B中都要使用,該怎么辦?

      答:將這個數據存儲在一個全局變量里面。

      a = 100 # 定義全局變量a def testA(): print(a) # 訪問全局變量a,并打印變量a存儲的數據 def testB(): print(a) # 訪問全局變量a,并打印變量a存儲的數據 testA() # 100 testB() # 100

      global 關鍵字聲明a是全局變量

      a = 100 # 定義全局變量a def testA(): print(a) def testB(): global a a = 200 print(a) testA() testB()

      100 200

      函數的返回值、參數

      返回值

      思考:如果一個函數如些兩個return (如下所示),程序如何執行?

      def return_num(): return 1 return 2 result = return_num() print(result) # 1

      答:只執行了第一個return,原因是因為return可以退出當前函數,導致return下方的代碼不執行。

      思考:如果一個函數要有多個返回值,該如何書寫代碼?

      def return_num(): return 1, 2 result = return_num() print(result) # (1, 2)

      注意:

      return a, b寫法,返回多個數據的時候,默認是元組類型。

      return后面可以連接列表、元組或字典,以返回多個值。

      def return_num(): return (10, 20) return_num()

      (10, 20)

      位置參數

      位置參數:調用函數時根據函數定義的參數位置來傳遞參數。

      注意:傳遞和定義參數的順序及個數必須一致。

      def user_info(name, age, gender): print(f'您的名字是{name}, 年齡是{age}, 性別是{gender}') user_info('北山啦', 20, '男')

      您的名字是北山啦, 年齡是20, 性別是男

      關鍵字參數

      函數調用,通過“鍵=值”形式加以指定??梢宰尯瘮蹈忧逦?、容易使用,同時也清除了參數的順序需求。

      def user_info(name, age, gender): print(f'您的名字是{name}, 年齡是{age}, 性別是{gender}') user_info('Rose', age=20, gender='女') user_info('小明', gender='男', age=16)

      您的名字是Rose, 年齡是20, 性別是女 您的名字是小明, 年齡是16, 性別是男

      注意:函數調用時,如果有位置參數時,位置參數必須在關鍵字參數的前面,但關鍵字參數之間不存在先后順序。

      user_info(gender='男', age=16, '小明')

      File "C:\Users\ADMINI~1\AppData\Local\Temp/ipykernel_13808/292338224.py", line 1 user_info(gender='男', age=16,'小明') ^ SyntaxError: positional argument follows keyword argument

      缺省參數

      缺省參數也叫默認參數,用于定義函數,為參數提供默認值,調用函數時可不傳該默認參數的值(注意:所有位置參數必須出現在默認參數前,包括函數定義和調用)。

      注意:函數調用時,如果為缺省參數傳值則修改默認參數值;否則使用這個默認值。

      def user_info(name, age, gender='男'): print(f'您的名字是{name}, 年齡是{age}, 性別是{gender}') user_info('TOM', 20) user_info('Rose', 18, '女')

      您的名字是TOM, 年齡是20, 性別是男 您的名字是Rose, 年齡是18, 性別是女

      不定長參數

      不定長參數也叫可變參數。用于不確定調用的時候會傳遞多少個參數(不傳參也可以)的場景。此時,可用包裹(packing)位置參數,或者包裹關鍵字參數,來進行參數傳遞,會顯得非常方便。

      包裹位置傳遞

      def user_info(*args):#*必須寫,args可以為其他的 print(args) # ('TOM',) user_info('TOM') # ('TOM', 18) user_info('TOM', 18)

      注意:傳進的所有參數都會被args變量收集,它會根據傳進參數的位置合并為一個元組(tuple),args是元組類型,這就是包裹位置傳遞。

      包裹關鍵字傳遞

      def user_info(**kwargs): print(kwargs) # {'name': 'TOM', 'age': 18, 'id': 110} user_info(name='TOM', age=18, id=110)

      綜上:無論是包裹位置傳遞還是包裹關鍵字傳遞,都是一個組包的過程。

      拆包

      拆包:元組

      拆包:字典

      def return_num(): return 100, 200 num1, num2 = return_num() print(num1) print(num2)

      100 200

      dict1 = {'name': 'beishanla', 'age': 20} a, b = dict1 print(a) print(b)

      name age

      for i in dict1.keys(): print(i)

      name age

      lambda表達式

      lambda 參數列表 : 表達式

      lambda表達式的參數可有可無,函數的參數在lambda表達式中完全適用。

      lambda表達式能接收任何數量的參數但只能返回一個表達式的值。

      遞歸

      def sum_number(num): if num == 1: return 1 return num + sum_number(num-1) sum_number(3)

      lambda表達式的簡單例子

      def f1(a, b): return a + b print(f1(1, 2))

      3

      def f2(a, b): return a if a > b else b print(f2(1000, 500))

      1000

      列表數據按字典key的值排序

      infos = [ {'name': 'beishanla', 'age': 20}, {'name': 'zhagnzk', 'age': 21}, {'name': 'zhangy', 'age': 22}, ] infos.sort(key=lambda x: x['name'], reverse=True) print(infos)

      [{'name': 'zhangy', 'age': 22}, {'name': 'zhagnzk', 'age': 21}, {'name': 'beishanla', 'age': 20}]

      map、filter、reduce

      map:

      map(func, lst),將傳入的函數變量func作用到lst變量的每個元素中,并將結果組成新的列表(Python2)/迭代器(Python3)返回。

      square = list(map(lambda x: x**2, range(10))) print(square)

      [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

      square = [x**2 for x in range(10)] print(square)

      [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

      filter:filter(func, lst)函數用于過濾序列, 過濾掉不符合條件的元素, 返回一個 filter 對象。如果要轉換為列表, 可以使用 list() 來轉換。

      result = list(filter(lambda x: x % 2 == 0, range(10))) result

      [0, 2, 4, 6, 8]

      reduce:reduce(func,lst),其中func必須有兩個參數。每次func計算的結果繼續和序列的下一個元素做累積計算。

      注意:reduce()傳入的參數func必須接收2個參數。

      import functools list1 = [1, 2, 3, 4, 5] def func(a, b): return a + b result = functools.reduce(func, list1) print(result) # 15

      15

      文件操作

      文件操作步驟

      打開

      文件對象 = open(目標文件, 訪問模式) with open(目標文件,訪問模式):

      操作

      文件對象.read() 文件對象.readlines() 文件對象.readline()

      文件對象.write()

      seek()

      關閉

      文件對象.close()

      主訪問模式

      w:寫,文件不存在則新建該文件

      r:讀,文件不存在則報錯

      a:追加

      文件和文件夾操作

      重命名:os.rename()

      獲取當前目錄:os.getcwd()

      獲取目錄列表:os.listdir()

      Python

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

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

      上一篇:wps怎么畫圖?
      下一篇:WPS表格復制單元格和行的選擇和粘貼簡介(wps表格粘貼到可見的單元格)
      相關文章
      亚洲国产成人va在线观看网址| 亚洲成AV人片在线观看无| 国产精品亚洲成在人线| 午夜亚洲国产精品福利| 亚洲αⅴ无码乱码在线观看性色| 亚洲午夜无码毛片av久久京东热| 国产成人精品日本亚洲直接| 亚洲综合丁香婷婷六月香| 亚洲理论精品午夜电影| 亚洲精品福利网站| 亚洲大片免费观看| 亚洲一区二区三区在线观看蜜桃 | 亚洲欧洲精品成人久久奇米网| 亚洲av无码成人影院一区| 亚洲6080yy久久无码产自国产| 亚洲国产欧美国产综合一区 | 亚洲五月综合缴情在线观看| 亚洲日本乱码在线观看| 久久亚洲国产中v天仙www| 亚洲av综合av一区| 亚洲国产一区二区a毛片| 久久久国产精品亚洲一区| 亚洲天堂电影在线观看| 亚洲成aⅴ人片在线观| 亚洲AV色吊丝无码| 亚洲熟妇AV一区二区三区浪潮| 亚洲美国产亚洲AV| 国产成人综合久久精品亚洲| 亚洲精品视频在线看| 亚洲色偷偷综合亚洲AVYP| 亚洲av中文无码乱人伦在线咪咕 | 亚洲AV日韩综合一区| 国产亚洲日韩在线a不卡| 亚洲日韩在线中文字幕第一页| 久久久久亚洲精品男人的天堂| 亚洲欧洲日产国码无码久久99| 亚洲av福利无码无一区二区| 亚洲精品永久www忘忧草| 亚洲综合中文字幕无线码| 亚洲AV香蕉一区区二区三区| 亚洲国产精品人人做人人爽|