Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。
str():字串轉換
語法:
str(物件)
str(bytes物件, encoding='utf-8', errors='strict')把任何物件轉成字串。幾乎所有東西都能轉:print(str(123)) # '123'
print(str(3.14)) # '3.14'
print(str(True)) # 'True'
print(str(None)) # 'None'
print(str([1, 2, 3])) # '[1, 2, 3]'不帶參數時,回傳空字串:
print(str()) # ''(空字串)
print(len(str())) # 0也可以把 bytes 轉成字串,指定編碼方式:
b = b'hello'
print(str(b, encoding='utf-8')) # 'hello'
# 中文 bytes
b2 = '你好'.encode('utf-8')
print(str(b2, encoding='utf-8')) # '你好'字串拼接很常見,str() 在這時候很好用:
age = 25
# print("我今年" + age + "歲") # TypeError!
print("我今年" + str(age) + "歲") # 我今年25歲
# 當然也可以用 f-string(會自動呼叫 str())
print(f"我今年{age}歲") # 我今年25歲自訂類別可以定義 __str__() 來控制轉換結果:
class Dog:
def __init__(self, name):
self.name = name
def __str__(self):
return f"小狗:{self.name}"
dog = Dog("阿柴")
print(str(dog)) # 小狗:阿柴
print(dog) # 小狗:阿柴(print 會自動呼叫 str())小小綜合例子
# 建立一份簡單的商品清單
items = [
{"name": "蘋果", "price": 35, "qty": 3},
{"name": "牛奶", "price": 65, "qty": 1},
{"name": "麵包", "price": 40, "qty": 2},
]
print("=" * 30)
print("購物清單")
print("=" * 30)
total = 0
for item in items:
subtotal = item["price"] * item["qty"]
total += subtotal
line = (
item["name"] + " x" + str(item["qty"])
+ " = $" + str(subtotal)
)
print(line)
print("-" * 30)
print("總計:$" + str(total))