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 |
水果 | 顏色、大小 | 蘋果、芭樂 |
學校 | 學生、老師、班級、科系 | 大學、高中、國中 |
煮菜 | 主菜、調味料、火、配料、水、時間 | 牛排、蛤蠣湯 |
貓 | 花色、身長、毛長、眼耳鼻口 | 牛排、蛤蠣湯 |
- 定義類別/屬性/初始化
- 類別(class)的結構:
- ->屬性(attribute)
- ->建構子(constructor)
- ->方法(method)
- ->物件(object)
- 類別(class)的結構:
- 封裝 Encapsulation
- 繼承 Inheritance
- 多型 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
參考