註冊 登錄
Android 台灣中文網 返回首頁

jianrupan的個人空間 https://www.apk.tw/?1180935 [收藏] [複製] [分享] [RSS]

日誌

Python 程式語言學習(二)

已有 213 次閱讀2021-8-5 09:53 |個人分類:軟體應用| Python

線上課程: 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 NotationJavaScript 物件表示法):

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)

 


路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

facelist

您需要登錄後才可以評論 登錄 | 註冊