前一篇文章: Python 之禪,import this是有趣的彩蛋
以下程式也是由ChatGPT產生。
範例一、Flat is better than nested. (平坦勝於嵌套)
當代碼的邏輯結構過於嵌套時,代碼變得難以閱讀和維護,應盡量保持平坦的結構:
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 不好的嵌套 def process(data): if data is not None: if isinstance(data, list): if len(data) > 0: return data[0] return None # 改進版 def process(data): if data is None or not isinstance(data, list) or len(data) == 0: return None return data[0] |
這樣使邏輯更簡單、清晰,減少了不必要的嵌套。
代碼不應該過於緊湊,應使用適當的空白和換行來提高可讀性:
1 2 3 4 5 6 | # 過於緊湊的代碼 def add(x):return x+1 # 改進版 def add(x): return x + 1 |
在改進版中,分行和空白使得代碼更具可讀性。
當邏輯不明確時,應該避免猜測,並明確地處理所有可能的情況:
1 2 3 4 5 6 7 8 9 | # 不好的做法:猜測邏輯 def divide(a, b): return a / b # 這會導致在 b 為 0 時拋出錯誤 # 改進版:處理所有情況 def divide(a, b): if b == 0: return "Division by zero is not allowed." return a / b |
這樣可以避免不明確的行為,並處理潛在的錯誤情況。
範例四、 There should be one-- and preferably only one --obvious way to do it. (應該有一種——最好只有一種——明顯的方法來做事)
代碼應該具有唯一明顯的解決方案,而不是多種實現方式。例如:
Python 的設計哲學強調應該有一種最合適的方法來完成任務,以保持一致性和可讀性。
代碼應該具有唯一明顯的解決方案,而不是多種實現方式。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 壞例子:有多種方式來訪問字典的鍵 my_dict = {'a': 1, 'b': 2, 'c': 3} # 方法1 if my_dict.has_key('a'): print(my_dict['a']) # 方法2 if 'a' in my_dict: print(my_dict['a']) # 好例子:統一使用推薦方式 if 'a' in my_dict: print(my_dict['a']) |
Python 的設計哲學強調應該有一種最合適的方法來完成任務,以保持一致性和可讀性。
範例五、Now is better than never. (現在勝於永不)
在某些情況下,延遲過多反而無益,應儘早解決問題。例如:
1 2 3 4 5 6 7 | # 永不實現的壞例子 def feature(): pass # 這個功能永遠不會被實現 # 好例子:即使是簡單的功能,也應該儘早實現 def feature(): print("This is a placeholder function. To be implemented.") |
即使功能還未完善,讓它以某種形式存在,可能比等待更好。
範例六、Namespaces are one honking great idea -- let's do more of those! (命名空間是一個非常棒的主意——讓我們多使用它們吧!)
在這裡,我們使用了 math 命名空間來調用 pi,而不是定義自己的常數,這有助於減少命名衝突並保持代碼乾淨。
使用命名空間可以避免命名衝突,讓代碼更加結構化、組織化。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 沒有使用命名空間,容易發生命名衝突 x = 10 def func(): x = 20 return x # 使用命名空間 import math x = 10 def calculate_area(radius): return math.pi * radius ** 2 |
在這裡,我們使用了 math 命名空間來調用 pi,而不是定義自己的常數,這有助於減少命名衝突並保持代碼乾淨。