這篇主要是講一些比較深入的東西,偶爾才會碰到一次的東西,基本上是按照我現在碰到的機率由高至低排序的。
在 Python 中有關類別、函數以及變數的名稱並沒有限制如何命名,但是按照規則命名會更快更容易解讀 code,尤其是遇到較大型的專案時。基本規則如下:
一定要遵守的:
要注意的:
推薦的方式:
| 類型 | 方式 | 範例 | 
|---|---|---|
| Local variable | 一律小寫,文字串接的時候使用下底線 | val_name = 123 | 
| Globals(全域變數), Constants(常數) | 一律大寫 | PI=3.14 | 
| function(函數) | 一律小寫,文字串接的時候使用下底線 | def add(): | 
| Class(類別) | 單字開頭第一個字大寫,其餘小寫,文字串接不使用下底線 | ClassName | 
| Module(模組), Package(套件) | 一律小寫(J些下下下一篇會講到) | module.py | 
range(start, end, step),最少要有 end 。如果只輸入兩個數字,那兩個會是 start 跟 end。
如果一個字串中有需要插入較多的變數,要組合在一起就比較麻煩,例如:
''' Input '''
name = 'ithome'
year = 2021
month = 9
day = 4
weight = 58.5
height = 163
print('My name: ' + name + '\nToday: ' + str(year) + '/' + str(month) + '/' + str(day) + '\nMy height: ' + str(height) + '\nMy weight: ' + str(weight))
''' Output '''
My name: ithome
Today: 2021/9/3
My height: 163
My weight: 58.5
像這樣要組合起來就比較麻煩,不過 Python 中提供了一個方便好用的字串格式化方式 .format() ,可以將字串中要帶入值得位置用大括號括起來,然後再 format() 的小括號中填入想要的值。例如:
''' Input '''
name = 'ithome'
year = 2021
month = 9
day = 3
weight = 58.5
height = 163
print('My name:{}'.format(name))
print('Today:{y}/{m}/{d}'.format(y=year, m=month, d=day))
print('My height:{1:>6d}\nMy weight:{0:>6.2f}'.format(weight, height))
''' Output '''
My name:ithome
Today:2021/9/3
My height:   163
My weight: 58.50
知道後可已用得更順手的東西:
: 前面可以使用索引值或 key-value 進行取值,後面可以加格式化方式,也可都不使用。{:<} , {:^} , {:>} 是左、中、右對齊。{:+} 表示帶正負號。My height ){:d} 、 {:f} 、 {:e} or {:E} 、 {:x} or {:X} 、 {:o} 、 {:b} 分別是整數、浮點數、科學記號(大小寫)、十六進位(大小寫)、八進位、二進位{:,} 的方式以逗號分隔數字(千分位) ex: print('{:,}'.format(123456))  # 123,456
{:%} 輸出百分比(自動乘100) ex: print('{:.0%}'.format(0.3))  # 30%
{:%?} 的方式輸出日期時間,有 * 表示根據地區會有不同的輸出,例如:
%a 星期縮寫%A 星期全寫%w 星期數字%d 日期%b 月份縮寫 *
%B 月份全寫 *
%m 月份數字%y 西元年二位數字%Y 西元年四位數字%H 24小時制%I 12小時制%p AM 或 PM *
%M 分%S 秒%f 微秒六位數字%c 日期和時間 *
%x 日期 *
%X 時間 *
u -> unicode (會處理跳脫字元) | Python 預設字串編碼方式
r -> 非轉義原生字元 (不會處理跳脫字元)
b -> bytes位元組
f -> 在字串內支援大括號內的 Python 表示式 (就是指第四點)
''' 如果這樣輸入 '''
name = 'ithome'
str_default = 'Hello {name} \n Welcome'
str_u = u'Hello {name} \n Welcome'
str_r = r'Hello {name} \n Welcome'
str_b = b'Hello {name} \n Welcome'
str_f = f'Hello {name} \n Welcome'
''' 每個輸出就會像這樣 '''
# Input
print(str_default)
# Output
Hello {name}
 Welcome
# Input
print(str_u)
# Output
Hello {name}
 Welcome
# Input
print(str_r)
# Output
Hello {name} \n Welcome
# Input
print(str_b)
# Output
b'Hello {name} \n Welcome'
# Input
print(str_f)
# Output
Hello ithome
 Welcome
bytes 這邊可能看不太出來,搭配第六點看會更清楚。
:::info
常用跳脫字元
| 字元 | 意義 | 
|---|---|
| \\ | 反斜線 \ | 
| \' | 單引號 ' | 
| \" | 雙引號 " | 
| \b | 空格(BS) | 
| \n | 換⾏(LF) | 
| \r | 回車(CR) | 
| \t | 水平縮排(TAB) | 
| \f | 換頁(FF) | 
| 0o?? | 8進位(數字零跟英文小寫O) | 
| 0x?? | 16進位(數字零跟英文小寫X) | 
| ::: | 
在 Python 中 str 預設是使用 unicode 進行資料處理的。不過在某些情況,需要將 unicode 轉換為其他格式,所以就需要使用到編解碼。

s = '你好'
# Input
print(s.encode('utf-8'))
# Output
b'\xe4\xbd\xa0\xe5\xa5\xbd'
# Input
print(s.encode('big5'))
# Output
b'\xa7A\xa6n'
那麼進階的就大概這樣,主要是可以將常用的東西中,處理起來比較麻煩的東西簡單處理掉的部分。
大家掰~掰~