常用方法

各種函式

elif

等於其他語言中的「else if」

類似三元運算子

flag = True if x.isClick() else False
等同
if x.isClick():
  flag = True
else:
  flag = False

~ (波浪符號)

「反、NOT」之意。

可處理「減去」資料
data = [ 'a', 'b' ]
data_dup = [ 'b' ]
data[~data_dup] # =[ 'a' ]

either

Union

Union[X, Y] means either X or Y.

EX
Union[str, None] #不是空值就是String

Optional

Optional[X] #等同 Union[X, None]
Optional[str]="AAA" #不填入時會是預設值"AAA"

None

是空值等同null

is None

判斷物件是否為「空」

if o is None:
if o is not None:

類型為NoneType,但用isinstance會無法判斷,「空」的東西沒有實際上的類型,有點類似JS的undefined

可換行文字

"""XXX""" #等同JS中`XXX`

不指定給變數時可當「多行註解」使用

len = length

len(object)

Type

type(x) #x的類型

isinstance

判斷物件類型,搭配type(o)使用

isinstance(o, type)

EX
isinstance(row[i_row], datetime)

算數

x // y	#X除以Y,只取整數解
x % y	#求X除以Y的餘數
x ** y	#X的Y次方

lambda

用於宣告一個簡易函式,基本只有一行的處理,想多行需提出宣告為def。

方便使用於函數變數需要是簡易函式時。

語法結構
lambda [參數]: [函式本體]
EX
>>> sorted(('Justin', 'openhome', 'momor'), key = lambda name: name[-1]) 
['openhome', 'Justin', 'momor']
>>> max = lambda n1, n2: n1 if n1 > n2 else n2
>>> max(10, 5)
10

切片(索引值的使用)

seq[start:end:step]

seq為任意序列(list、tuple,也可以是string)

start = 取值起始位置,預設0。 end = 取值結束位置(不包含),預設seq長度。 step = 切片資料列的步長(取值間格),預設1。

a = [1, 2, 3, 4, 5]

print(a[-1]) #倒數第一個
>>> 5

print(a[::-1]) #倒敘
>>> [5, 4, 3, 2, 1]

書.page69(圖示很清楚)

linspace(分N等份)

import numpy as np
print(np.linspace(1, 10, 10))
> [ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]

print(np.linspace(0.1, 1.0, 10))
> [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ]

參考:https://vimsky.com/zh-tw/examples/usage/numpy-linspace-python.html

程式碼太長時...

如果程式碼太長寫成一行不便於閱讀,可以使用\對程式碼進行折行。

is_leap = year % 4 == 0 and year % 100 != 0 or \
          year % 400 == 0

Last updated