||
線上課程: https://training.pada-x.com/online.htm
學習重點:
基礎常識學習
(a) 封包(Package):用來 整理、分類 模組程式(包含了一個或多個的模組(Module),並且擁有__init__.py檔案)。
(b) 類別(Class):封裝的變數或函式,通稱類別的屬性。名稱通常首字大寫。
基本語法:
class 類別名稱 :
定義封裝的變數
定義封裝的函式
使用語法:
類別名稱.屬性名稱
(c) 類別應用:實體物件(實體屬性、實體方法)。
實體屬性:封裝在實體物件中的變數。
實體方法:封裝在實體物件中的函式。
先定義類別,再透過類別建立實體物件。
要先建立實體物件,然後才能使用實體屬性。
基本語法:
class 類別名稱 :
# 定義初始化函式 self 為固定帶入
def __init__(self) :
# 透過操作 self 來定義實體屬性
# 定義實體 函式/方法
def 方法名稱(self, 更多自訂參數)
# 方法主體, 透過 self 操作實體物件
# 建立實體物件, 放入變數中
Obj = 類別名稱( ) # 呼叫初始化函式
使用語法:
實體屬性:實體物件.實體屬性名稱
實體方法:實體物件.實體方法名稱(參數資料)
# 封包 # 主程式 import package_file as geometry print(geometry.sDistance) print("封包 point 驗證: ", geometry.Distance(3, 4)) print(geometry.sSlope) print("封包 line 驗證: ", geometry.Slope(1, 1, 3, 3)) #封包資料夾 package_file # __init__.py # 加入 模組 import package_file.point import package_file.line # 點運算 # 與原點距離: (x平方+Y平方)開根號 sDistance = package_file.point.sDistance Distance = package_file.point.Distance # 線運算 # 線段距離: (x平方+Y平方)開根號 sLen = package_file.line.sLen Len = package_file.line.Len # 線段斜率: x/Y sSlope = package_file.line.sSlope Slope = package_file.line.Slope # point.py … # line.py …
# 類別 # 類別宣告 class MyClass : x = 3 # 定義變數 def ClassFunction() : # 定義函式 print("Hello") print(MyClass.x) MyClass.ClassFunction(); # 練習 Read/Write # 定義類別 與 類別屬性(封裝在類別中的變數與函式) # 定義一個類別 IO, 有朗個屬性 supportSrc 和 Read class IO: supportSrc = ["Consol", "File"] def Read(src): if src not in IO.supportSrc: print("沒有支援", src) else: print("Read From ", src) # 使用類別 print(IO.supportSrc) gSrc = input("請輸入讀取來源:") IO.Read(gSrc)
# 實體物件(實體屬性、實體方法) # 定義類別 class Point: # 定義初始化函式 def __init__(self, x, y): print("class Point 初始") self.x = x self.y = y # 定義實體方法 def show(self): print("顯示 Point:", self.x, self.y) # 建立實體物件 # 此實體物件包含 x 和 y 兩個實體屬性 p1 = Point(3, 4) # 呼叫初始化函式 print("取實體屬性資料 p1 x:", p1.x, ", y:", p1.y, ", px+py:", p1.x+p1.y) print("呼叫實體方法 p1 show:") p1.show() p2 = Point(33, 44) print("取實體屬性資料 p2 x:", p2.x, ", y:", p2.y, ", px+py:", p2.x+p2.y) print("呼叫實體方法 p2 show:" ) p2.show() print() |
基本應用
(1) 讀取、儲存文字檔案。
開啟檔案 > 讀取或寫入 > 關閉檔案
(a) 開啟檔案:
檔案物件 = open(檔案路徑, mode=開啟模式)
開啟模式:
r 讀取模式
w 寫入模式
r+ 讀寫模式
(b) 讀取檔案:
讀取全部文字:檔案物件.read()
一次讀取一行:
for 變數 in 檔案物件 :
從檔案依序讀取每行文字到 變數 中
讀取 JSON 格式(JavaScript Object Notation,JavaScript 物件表示法):
import json
讀取到的資料 = json.load(檔案物件)
補充:JSON 基本: https://www.youtube.com/watch?v=t7TSFImLa0U
/*
var point = new Object( );
point.x = 3;
point.y = 4;
point.get = function() {
alert(this.x+","+this.y)
}
*/
var point = {
"x":3,
"y":4,
"get":function{
alert(this.x+","+this.y)
}
}
point.get();var point = {"x":3, "y":4, "get":function{
alert(this.x+","+this.y)
}}
point.get();var point = {"x":3, "y":4};
(c) 寫入檔案:
檔案物件.write(字串)
寫入 JSON 格式
import json
json.dump(要寫入的資料, 檔案物件)
(d) 關閉檔案:
檔案物件.close()
(e) 最佳實務:
with open(檔案路徑, mode=開啟模式) as 檔案物件 :
讀取或寫入檔案的程式
# 以上區塊會自動、安全的關閉檔案(不須自己 close)
(f) 實例操作:
# 讀取、儲存文字檔案 # 儲存檔案 print("儲存檔案驗證") file = open("data.txt", mode="w", encoding="utf-8") # 開啟 file.write("Hello File Second Line 第三行") # 操作 file.close() # 關閉 # 最佳實務寫法 with open("data_02.txt", mode="w", encoding="utf-8") as file2: file2.write("最佳實務寫入測試 第二行") # 讀取檔案 print("讀取檔案驗證") with open("data.txt", mode="r", encoding="utf-8") as file3: print("讀取 data.txt:", file3.read()) with open("data_02.txt", mode="r", encoding="utf-8") as file4: print("讀取 data_02.txt:", file4.read()) # 把檔案中的資料, 一行一行的讀出來, 並計算總合 sum = 0 with open("data_03.txt", mode="w", encoding="utf-8") as file5: file5.write("3 4") with open("data_03.txt", mode="r", encoding="utf-8") as file5: for x in file5: # 一行一行讀出 sum += int(x) print("Get the sum:", sum) # 使用 JSON 格式讀取, 複寫檔案 import json with open("config.json", mode="r", encoding="utf-8") as file6: data = json.load(file6) print(data) # data 是一個字典資料 print("json 內容 name:", data["name"], ", version:", data["version"]) # 修改 JSON 資料 data["name"] = "New Name" data["version"] = "2.0.0" # 寫入 with open("config_02.json", mode="w", encoding="utf-8") as file7: json.dump(data, file7) |