[Python_3] Python 函式 & IO
阿新 • • 發佈:2018-11-09
0. 說明
Python 函式 & IO 筆記,基於 Python 3.6.2
參考
Python: read(), readline()和readlines()使用方法及效能比較
1. 函式
# -*-coding:utf-8-*- """ 函式 """ # 定義函式,有return語句,否則返回None def add(a, b): #有返回語句 print("a : " + str(a)) print("b : " + str(b)) return a + b print(add(2, 3)) """ 定義函式,有return語句,否則返回None *a : 變長引數 *args : 固定寫法,表示當前位置上任何多個無名引數,它是一個tuple **kwargs: 固定寫法,關鍵字引數,它是一個dict 此種方式類似於Java 的反射中的 Method 類,能夠提取函式的執行時資訊。 """ def f1(*a): for e in a:print(e) # 呼叫函式,傳遞變長引數 f1((1, 2, 3, 4, 5)) def f2(a, b, c, *args): print(str(args)) f2(1, 2, 3, 4, 5) def foo(x, *args, **kwargs): print('args=', args) print('kwargs=', kwargs) print('**********************') foo(1, 2, 3, 4) foo(1000, a=1, b=2, c=3) foo(1, 2, a=4, b=5, c=100)
2. IO
# -*-coding:utf-8-*- """ IO """ """ 檔案讀操作 """ # 一次性讀取所有行檔案 f1 = open("e:/data.txt") lines = f1.readlines() for l in lines: print(l, end="") f1.close() # 每次讀取下一行檔案 print() print("=============") f2 = open("e:/data.txt") while (True): # 讀取第一行 line = f2.readline() while line is not None and line != "": print(line, end="") # 讀取下一行 line = f2.readline() else: break f2.close() """ None,類似於 Java 中 null 的表示不存在。 """ x = None print(x) """" 檔案寫操作 寫入檔案 mode=r | wa | w : overwrite 覆蓋模式 a : append 追加模式 """ f = open("e:/data2.txt", mode="a") f.write("i am panda") f.close() """ 檔案重新命名 原始檔必須存在 """ import os os.renames("e:/data2.txt", "e:/data3.txt") """ 刪除檔案 """ import os os.remove("e:/data3.txt") """ 建立 & 刪除空目錄 """ import os # os.mkdir("e:/testdir") os.removedirs("e:/testdir") """ 列出目錄的元素 """ import os files = os.listdir("d:/") for i in files: print(i)
3. 主函式執行
# -*-coding:utf-8-*- """ 匯入 Python 模組,每個 Python 檔案就是一個模組 判斷當前檔案是否直接執行,還是被其他引用 直接執行的時候值為"__main__" """ import test6_function test6_function.add(1, 2) print(__name__) if __name__ == "__main__": print(100)
4. 引數提取
模擬引數設定
""" 引數提取 通過 sys 的 argv 屬性提取引數列表 """ # 提取指令碼的引數 import sys r = sys.argv print(r[0]) print(r[1])
結果如下,第一個引數為指令碼
5. 反射訪問
""" 反射訪問 """ s = "xxx" s.__len__() # 返回物件的指定屬性,沒有的話,可以指定預設值 r1 = getattr(s, "len", "no this attr") r2 = getattr(s, "__len__", "no this attr") print(r1) print(r2)
6. 日期函式
""" 時間函式 """ # 匯入時間庫 import datetime datetime.datetime.now() print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))