Skip to content
On this page

Python學習

變數與基本運算

資料類型與轉換

Python中一切都是物件。 class是定義類別的開始

py

參考 : 物件導向-Class類的封裝/繼承/多型

@property這是為了讓class內的物件變成唯讀,禁止被修改內容。

py
class Item:
    # __init__記錄當下物件
    def __init__(self):
        self.psd=123
    @property
    def psd_num(self):
        return int(456-self.psd)
    @pad_num.setter
    def new_num(self, new_psd):
        self.psd=999-new_psd

參考

下底線_這比較困惑,通常遇到的有:__init____str__..等等,一般用在數字、常數上,只是想隔開成串的數據,好容易解讀。

py
 c=123_456_789

用在迴圈或其他元素上,代替該元素較不用在意的值。

py
# 迴圈
for _ in range(5):
    print( _ )
# 解包
abc,*_,xyz=('aaa','bbb','123','456','eee')
>abc
# aaa
>xyz
#eee

用在變數或函式前上,除了可以加強辨識,也告訴其他編輯者盡量不要使用到該函式。

py
def __init__(self):
    print(self._title)

def get_me(self):
    pass

def _dont(self):
    self._name='abcdefg'
    print(self._name)

參考

條件判斷

py
if

迴圈 loop

迴圈就是要解決重複執行的方法之一,語法使用 for+ 變數 +in+ 序列sequence(清單list)

py
# 用法
for i in item:
# 舉例
mylist=[0,1,2]
for i in mylist:
    print(i)
    # 0
    # 1
    # 2
# 舉例:使用索引
namelist=['Evan H.','Ian H.','Jean H.']
for x in range(len(namelist)):
    print(namelist[x])
    # Evan H.
    # Ian H.
    # Jean H.

搭配range()

這裡指的是範圍,語法使用 range( 起始值, 終止值, 遞增值 ),許多與語法也都是這樣寫。

py
# 舉例
for i in range(10):
    print(i, end=' ')
    # 0 1 2 3 4 5 6 7 8 9
for i in range(20,2,-2):
    print(i, end=' ')
    # 20 18 16 14 12 10 8 6 4

範例(9*9乘法表)

兩個9的思考點,代表需要2個9的迴圈。

py
# '\t'代表換行,end=' '表示結尾增加空白
for i in range(1,10):
    for j in range(1,10):
        if j==9:
            print ('\t', i*j)
        else:
            print ('\t', i*j, end=' ')

串列 list

串列(list)不是字串(string),與js中的陣列(array)相似。

py
mylist=["abc","def","hij","klm"]

建立串列

使用list()split()建立串列。

py
inlist=("abc","def","hij","klm")
print(list(inlist))
# ["abc","def","hij","klm"]
date='2023/06/27'
print(date.split('/',1))
# ['2023','06/27']

參考

函式的使用

遞迴

Dictionary字典

排序

符號代表含意

箭頭->代表返回值類型,也就是處理後的返回類型。

py
def a(name:str, age:int)->None:
# 或
def b(self, row:int, column:str)->any:
# 或
def c(self, sql:str, *ages)->int:

DataSet/DataClasses 打包繼承

避免重複寫碼,可使用 class 打包 function

py
class DataSet:
    def __init__(self)->None

python 3.7後改成這樣

py
from dataclasses import dataclass
@dataclass
class dataset:
    

Class類別

物件導向(Object-Oriented Programming, OOP)的方法,可套用在諸多方法上,不需要重複編寫程式。

先舉個例說明類別、屬性、物件的區別:

類別(class)屬性(attribute)物件(object)
車子車門、車窗、後照鏡、方向盤Toyota、Benz
水果顏色、大小蘋果、芭樂
學校學生、老師、班級、科系大學、高中、國中
煮菜主菜、調味料、火、配料、水、時間牛排、蛤蠣湯
花色、身長、毛長、眼耳鼻口牛排、蛤蠣湯
  1. 定義類別/屬性/初始化
    1. 類別(class)的結構:
      1. ->屬性(attribute)
      2. ->建構子(constructor)
      3. ->方法(method)
      4. ->物件(object)
  2. 封裝 Encapsulation
  3. 繼承 Inheritance
  4. 多型 Polymorphism

開始一定會先宣告基本有多少屬性。

py
class Car:
    # 先規劃屬性為空值,這樣後續才能塞資料進去(可省略)
    door = None
    window = None
    mirr = None
    # 建構子(門、窗、鏡之類的)(constructor)
    def __init__(self, door, window, mirr):
        self.door = door
        self.window = window
        self.mirr = mirr
    # 方法(method)
    def car_type(self):
        pass

參考