在Python處理數字或者print東西的時候,有時需要對於不同type的物件進行轉換,剛好今天在研究多線程的時候看到有不錯的寫法,這裡把一些方式給記錄下來,這篇文章也會同步有英文版在Medium上面。廢話不多說,直接開始!
舊式方法: %
這似乎跟以往C的寫法比較相像?因為我沒有寫過C,所以這是根據網路上的說法,而python的確也支援這種寫法。
基本的形式為: print('Hello %s' % [string])
- 使用%去表示佔位符(placeholder)
- 格式
- %s: string 字串
- %d: decimal 十進制
- %o: octal 八進制
- %x: octal 十六進制
- %e: exponential 次方制
- %f: floats 浮點數
%的用法1 2 3 4 5 6 7 8 9 10 11 12 13 14
| a = 1234567 print('a equals %d' % a) --> a equals 1234567 print('a equals %10d' % a) --> a equals 1234567
b = 23.7654 print('b equals %.2f' % b) --> b equals 23.77 print('b equals %.2e' % b) --> 2.38e+01
print('a equals %.3e and b equals %.1e' % (a,b)) --> a equals 1.235e+06 and b equals 2.4e+01
|
不同於舊式,format使用{}為佔位符,使用方法大同小異,但少掉了%,且可以給予變數名稱增強了閱讀性。
format的用法1 2 3 4 5 6 7 8 9 10 11 12 13 14
| a = 1234567 print('a equals {}'.format(a)) --> a equals 1234567 print('a equals {:10d}'.format(a)) --> a equals 1234567
b = 23.7654 print('b equals {:.2f}'.format(b)) --> b equals 23.77 print('b equals {:.2e}'.format(b)) --> 2.38e+01
print('a equals {:.3e} and b equals {:.1e}'.format(a,b)) --> a equals 1.235e+06 and b equals 2.4e+01
|
使用變數名稱的用法1
| print('My name is {name}'.format(name='Tyler'))
|
f-string
在Python 3.6以上的版本,Python本身提供Fancier Output Formatting。
使用f-strings的範例1 2 3 4 5 6 7 8 9
| name = 'Tyler' age = 24 f"My name is {name} and I'm {age:.2f} years old." --> "My name is Tyler and I'm 24.00 years old."
Percentage = 0.45 f"The vodka contains at least {Percentage:.1%} of alcohol." --> 'The vodka contains at least 45.0% of alcohol.'
|