😽
【Python】TruthyとFalsyを知らずに実務をしていた
副業エンジニア1年目。幸いこれまで納品してきたシステムにバグはない。ところがそれは「AIの支援ありき」の話。実際にはTruthyとFalsyの違いを知らずに、コーディングしていました。お恥ずかしい話ですが、長期休暇を利用して基本を再学習していて気が付き...。
自戒もこめてメモしておこうと思います。要は以下のようなコードを曖昧にしか理解していませんでした。
意味もわからずコードを書いていた恐怖
def check_truthiness(var):
if var:
print(f"{var} は Truthy です。")
else:
print(f"{var} は Falsy です。")
check_truthiness("text") # -> Truthy
check_truthiness(42) # -> Truthy
check_truthiness([0, 1]) # -> Truthy
print("---")
check_truthiness("") # -> Falsy
check_truthiness(0) # -> Falsy
check_truthiness([]) # -> Falsy
check_truthiness(None) # -> Falsy
具体的には、WikipediaのAPIからサマリーを取得し、表示するコードを書いていた時。「クラスは辞書かNoneしか返さない仕様だけれど...」。本当にこの書き方であっているのか、変に悩みました。
if __name__ == "__main__":
# 使用例
fetcher = WikipediaFetcher()
# "Zenn"の情報を取得して要約を表示
zenn_data = fetcher.fetch_data("Zenn")
if zenn_data:
print("--- Zennの要約 ---")
print(zenn_data["summary"])
# "Qiita"の情報を取得して要約を表示
qiita_data = fetcher.fetch_data("Qiita")
if qiita_data:
print("\n--- Qiitaの要約 ---")
print(qiita_data["summary"])
if var: と書くのは bool(var) is Trueと書くようなもの
「あれ? if zenn_data:ってなんだっけ? if zenn_data is not None:じゃダメなんだっけ?」って感じで小一時間悩んでいました。
結果的にはif zenn_data:とif zenn_data is not None:は「この文脈」では等価なわけですが、if zenn_data:と書く以上は、zenn_data → Truthy or not → True or Falseって流れが頭に入ってないといけない。
あるいはhoge_data → None → Falsthy → Falseってイメージで、どうやってBool値にたどり着くのか。今までよくわからずに、if var:を感覚で使っていたんですよね。
納期との兼ね合いで「とにかく動けー--」って日々だったからこそ、こういう基礎はつど確認しよう! と。とっても反省した、というお話でした。
Discussion