1. 簡介
Python 是一種用途廣泛的通用型程式語言,尤其在迴圈處理方面,在各種程式中都經常使用。透過使用迴圈,可以反覆執行特定處理,是提升程式效率不可或缺的重要功能。Python 提供了像是「while」和「for」等迴圈語法,其中無限迴圈在某些情境中非常有用。
什麼是無限迴圈?
無限迴圈指的是沒有結束條件,或是設計上不會自動終止的迴圈。這類迴圈常用於像伺服器持續運作並等待請求的情境。有時會刻意使用無限迴圈,但也可能因為錯誤而進入無限迴圈,因此了解正確的使用方式與結束方法非常重要。
無限迴圈的實用性與風險
無限迴圈可以持續運作直到特定條件成立,因此在需要程式不中斷執行的場景中,例如即時資料收集或等待事件觸發時,非常實用。然而,若使用不當,可能會導致程式無法正常結束,甚至耗盡系統資源。因此,在使用無限迴圈時,應正確設定結束條件或暫停機制,以降低對系統的負擔。
本文將深入介紹如何在 Python 中建立無限迴圈的方法與注意事項。我們也會說明如何安全地結束無限迴圈,並提供實際的程式碼範例,讓從初學者到進階使用者都能輕鬆掌握。

2. 在 Python 中建立無限迴圈的基本方法
在 Python 中建立無限迴圈有幾種基本方式。最常見的是使用「while 迴圈」或「for 迴圈」,另外也可以透過 itertools
模組或 iter
函式來實現。以下將依序介紹每一種無限迴圈的寫法。
使用 while 迴圈實現無限迴圈
最基本的無限迴圈寫法是使用 while True:
這個條件式。while
會在條件為 True
時不斷執行,若條件永遠為 True
,就會產生無限迴圈。
基本語法:
while True:
print("這段訊息會無限重複顯示")
在上述程式中,由於 while
的條件永遠是 True
,因此 print
函式會持續執行。這類無限迴圈常用於例如伺服器持續等待請求等情境。
使用 for 迴圈與 itertools 模組實現無限迴圈
結合 Python 的 for
迴圈與標準函式庫中的 itertools
模組,也可以建立無限迴圈。itertools
提供了像 count()
、cycle()
、repeat()
等適用於無限迴圈的函式。
- count(): 建立一個會不斷遞增數值的迴圈。
from itertools import count
for i in count(1):
print(i)
if i >= 10: # 任意的結束條件
break
- cycle(): 重複處理指定的清單等序列。
from itertools import cycle
for item in cycle(['A', 'B', 'C']):
print(item)
# 此範例中沒有結束條件,會無限輸出 'A', 'B', 'C'
- repeat(): 無限重複單一的值。
from itertools import repeat
for item in repeat("Python", 5): # 可透過第二個參數指定重複次數
print(item)
這些 itertools
函式在需要無限重複特定資料或序列的場景中非常實用,並且能讓程式碼更簡潔易讀。
使用 iter 函式建立無限迴圈
Python 的 iter()
函式也可以用來建立具有結束條件的無限迴圈。iter()
接受兩個參數:第一個是可呼叫的物件,第二個是作為終止條件的值(sentinel
)。當呼叫結果等於 sentinel
時,迴圈就會結束;否則會持續執行。
範例:
def input_func():
return input("請輸入文字(輸入 'exit' 結束): ")
for value in iter(input_func, 'exit'):
print(f"輸入內容: {value}")
此範例中,使用者可以不斷輸入文字,直到輸入 exit
為止,迴圈才會結束。這種方式非常適合需要明確結束條件的互動式程式。
3. 如何跳出無限迴圈
雖然無限迴圈會持續執行直到滿足特定條件,但如果不小心產生了非預期的無限迴圈,可能會導致程式無法停止。因此,設定正確的結束方式非常重要,以下介紹幾種常見的跳出方法。
使用 break 語句結束迴圈
在 Python 中,可以使用 break
語句來根據特定條件中斷迴圈。在無限迴圈的內部設定條件,當條件成立時就使用 break
跳出。
範例:
while True:
user_input = input("請輸入內容(輸入 '結束' 來停止迴圈): ")
if user_input == '結束':
print("已結束迴圈。")
break
print(f"輸入的文字: {user_input}")
在這個範例中,當使用者輸入「結束」時,會觸發 break
,並跳出無限迴圈。這種方式讓使用者可以根據需求主動停止程式。
使用 KeyboardInterrupt (Ctrl + C) 強制停止
如果是在開發環境或終端機中執行 Python 程式,當無限迴圈無法正常結束時,可以透過 KeyboardInterrupt 例外來強制停止,按下「Ctrl + C」(Windows 與 macOS 都適用)即可中斷程式。
try:
while True:
print("請按 Ctrl + C 強制結束")
except KeyboardInterrupt:
print("程式已被強制結束。")
這段程式碼會捕捉 KeyboardInterrupt
例外,讓無限迴圈在使用者按下 Ctrl + C 時能安全退出,並顯示訊息。
使用工作管理員或活動監視器結束進程
當無限迴圈導致 Python 程式完全無反應,甚至無法透過 Ctrl + C
終止時,仍可透過作業系統的工具來強制關閉程式。
- Windows: 使用
Ctrl + Shift + Esc
開啟工作管理員,尋找「Python」程序,點選後選擇「結束工作」。 - Mac: 開啟「活動監視器」,尋找「Python」程序,點選後選擇「結束處理程序」。
透過這些方式可以強制終止無限迴圈,不過要注意,未儲存的資料可能會因此遺失。

4. 無限迴圈的注意事項與實用範例
無限迴圈在許多情境中都非常有用,因為它可以讓程式在特定條件成立前持續運作。不過使用時也要特別注意風險與效能問題。以下列出幾個使用時需留意的重點。
無限迴圈的注意事項
- 非預期的無限迴圈
當迴圈缺乏正確的結束條件時,很容易不小心進入無限迴圈,導致系統負荷過重。特別是條件判斷錯誤或break
位置不當時,迴圈可能永遠無法結束。為避免此情況,建議定期設置檢查點。 - 大量消耗 CPU 資源
若無限迴圈執行過快,會造成 CPU 過度忙碌。這時可使用time.sleep()
等方式設定暫停時間,降低系統負擔。 範例:
import time
while True:
print("執行中...(節省資源)")
time.sleep(1) # 每次迴圈暫停 1 秒
透過這種方式,可以有效控制迴圈頻率,減少 CPU 使用率。
- 設定明確的結束條件
若沒有明確的終止條件,程式可能永遠執行下去。在設計時應考慮哪些狀況下需要終止,可以使用輸入、外部事件或例外處理機制等方式來控制。
無限迴圈的實用範例
- 即時資料收集
無限迴圈非常適合用於不斷監測資料的應用情境,例如使用 API 持續抓取社群媒體的最新貼文,或從 IoT 裝置接收感測器資料。 範例:
import time
def collect_data():
# 實作資料收集邏輯
print("收集中資料...")
while True:
collect_data()
time.sleep(5) # 每 5 秒收集一次資料
- 伺服器等待請求
伺服器類型的程式通常使用無限迴圈來不斷等待用戶端的請求,例如聊天機器人或 HTTP 伺服器,只有在收到請求時才會執行對應的處理,否則持續待命不中斷。 - 遊戲主迴圈
在遊戲開發中,主迴圈負責持續處理玩家輸入、畫面更新與遊戲邏輯。只要玩家還在進行遊戲,這個迴圈就會持續執行。 範例:
running = True
while running:
# 處理玩家輸入
# 更新畫面
# 更新遊戲狀態
if some_exit_condition:
running = False
無限迴圈在這些應用中扮演重要角色,但使用時要謹慎考慮系統效能與控制方式。透過設置暫停時間、結束條件或外部觸發條件,可以更有效率地利用無限迴圈。
5. 實作範例程式碼
以下將介紹幾個使用 Python 實現無限迴圈的具體範例。這些範例從最基本的寫法,到可以根據條件中斷的方式,再到進階應用,幫助你一步步掌握無限迴圈的使用方法。
基本的無限迴圈
最簡單的無限迴圈寫法是使用 while True
,由於 True
永遠為真,因此除非手動中斷,程式會無限執行。
範例:無限迴圈的基本語法
while True:
print("這段訊息會持續顯示")
這段程式碼會讓 print()
函式不斷執行,除非使用者或系統手動結束。若沒有設定結束條件,可能會造成系統過載,因此使用時要特別注意。
可透過條件中斷的無限迴圈
在無限迴圈中加入 break
語句,可在特定條件成立時中止執行。例如,當使用者輸入某個特定的值時結束。
範例:透過輸入來結束無限迴圈
while True:
user_input = input("輸入『結束』即可停止迴圈: ")
if user_input == "結束":
print("結束無限迴圈。")
break
print(f"你輸入了: {user_input}")
這種方法適合需要與使用者互動的情況,可以根據輸入動態控制程式流程。
使用 time.sleep() 節省資源
如果無限迴圈執行速度太快,會大量耗用 CPU 資源。可以使用 time.sleep()
暫停一段時間,減少系統負擔。
範例:加入等待時間的無限迴圈
import time
while True:
print("執行中...(節省系統資源)")
time.sleep(1) # 每次等待 1 秒
這種方式可以有效降低資源消耗,適合長時間執行的監控或排程任務。
使用 itertools 模組實現無限迴圈
Python 的 itertools
模組提供 count()
、cycle()
等函式,可以簡潔地實現無限迴圈。
範例:使用 count() 建立自動遞增的無限迴圈
from itertools import count
for i in count(1):
print(i)
if i >= 10: # 指定結束條件
break
這段程式從 1 開始,每次自動加 1,直到達到指定條件後結束。這種方法簡潔且實用。
等待使用者輸入的無限迴圈
若程式需要不斷等待使用者輸入,可搭配 iter()
函式來實作。以下例子中,當使用者輸入「exit」時才會結束。
範例:使用 iter() 與結束條件建立無限迴圈
def get_input():
return input("請輸入文字(輸入 'exit' 結束): ")
for user_input in iter(get_input, 'exit'):
print(f"你輸入了: {user_input}")
這種方法可以讓程式更有彈性地處理使用者輸入,且具備明確的終止條件。

6. 總結
無限迴圈是 Python 中非常實用的功能,適用於各種不間斷執行的場景。本文從基本語法、結束方式、風險控管,到實務應用與程式範例,進行了完整解析。雖然無限迴圈很強大,但若使用不當,也可能造成系統過載或異常狀況,因此必須謹慎使用。
重點回顧
- 無限迴圈的基本結構
在 Python 中可使用while True
或for
搭配itertools
來建立無限迴圈,掌握這些語法能幫助你更有效率地實作連續處理。 - 中斷無限迴圈的方法
了解break
、KeyboardInterrupt
(Ctrl + C)等方式,有助於你安全地結束無限迴圈,避免系統死當或不正常中斷。 - 實用範例
無限迴圈廣泛應用於即時資料收集、伺服器等待請求、遊戲主迴圈等場景。搭配time.sleep()
控制迴圈頻率,也能降低系統負荷,提升整體效能。
要正確使用無限迴圈,關鍵在於設計階段就考量結束條件與資源管理。只要妥善設計,無限迴圈可以幫助你打造更強大、更穩定的程式邏輯。