Python 格式化輸出技巧
分類
建立時間: 2022年10月16日 01:54
更新時間: 2023年1月18日 10:08
說明
分享一些常見、實用的輸出技巧,學會了可以大大節省寫程式的時間。
基本
我們先看最基本的字串串連,沒有比較,沒有傷害。
寫出來讓讀者們比較差異性。
hello = 'Hello'
world = 'World'
print(hello + ' ' + world)
# 輸出: Hello World
格式化的字串文本 (Formatted String Literals)
這個是我最愛的方式
格式化的字串文本 aka f-字串
hello = 'Hello'
world = 'World'
print(f'{hello} {world}')
# 輸出: Hello World
四捨五入
import math
print(f'The value of pi is approximately {math.pi:.3f}.')
# 輸出: The value of pi is approximately 3.142.
在格式化前先將值轉換過
!s
會套用 str()
from enum import IntEnum
class Numbers(IntEnum):
ONE = 1
TWO = 2
THREE = 3
three = Numbers.THREE
print(f'{three}')
print(f'{three!s}')
輸出
3
Numbers.THREE
!r
會套用 repr()
animals = 'eels'
print(f'My hovercraft is full of {animals}.')
print(f'My hovercraft is full of {animals!r}.')
輸出
My hovercraft is full of eels.
My hovercraft is full of 'eels'.
物件輸出
這是預設輸出物件的內容
class Greeting:
def __init__(self, name: str = ''):
self._name = name
greeting = Greeting('Enjoy')
print(greeting)
# 輸出: <__main__.Greeting object at 0x100000000>
假如我想讓 greeting
輸出時顯示的是 Hello World
那麼可以修改 __str__
方法
再進階一點我想自訂格式
例如上述的四捨五入那樣 print(f'{math.pi:.3f}.')
那麼可以修改 __format__
方法
class Greeting:
def __init__(self, name: str = ''):
self._name = name
def __format__(self, __format_spec: str) -> str:
if __format_spec == 'name':
return f'Hello {self._name}'
return 'Hello'
def __str__(self):
return 'Hello World'
greeting = Greeting('Enjoy')
print(greeting) # Hello World
print(f'{greeting:name}') # Hello Enjoy
print(f'{greeting:names}') # Hello
print(greeting)
直接輸出 __str__
方法的內容
print(f'{greeting:name}')
使用 __format__
方法
參數 __format_spec
為 name
print(f'{greeting:names}')
同上
但因為沒有特別處理 names
,所以直接回傳 Hello
參考
觀看次數: 2300
formatprintpythonstrstring
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!