- 1 1. 前言
- 2 2. 什麼是 Python 的 print() 函數
- 3 3. Java 的 println() 與 Python 的 print() 的差異
- 4 4. print() 函數的進階應用
- 5 5. 使用 print() 函數的注意事項與最佳實踐
- 6 6. 關於 print() 函數的常見問題(FAQ)
- 7 7. 總結
1. 前言
在學習 Python 的過程中,你可能會好奇:「println
函數怎麼不見了?」對於習慣 Java 等程式語言的人來說,像 System.out.println()
這樣的標準輸出方式是理所當然的。然而,在 Python 中並沒有 println()
這個函數,而是使用 print()
函數來實現相同的功能。
本文將詳細說明 Python 中 print()
函數的使用方式,並解釋它與 Java 的 println()
有何不同,同時介紹 print()
更進階的應用方式。
2. 什麼是 Python 的 print()
函數
在 Python 中,如果你想要在螢幕上輸出資料,可以使用 print()
函數。這個函數會將指定的資料輸出,並且預設在最後加上一個換行符號。
print()
函數的基本用法
最基本的用法是將字串傳入 print()
函數中,直接在畫面上顯示出來。
print("Hello, World!")
執行結果
Hello, World!
同時輸出多個字串
print()
函數可以接受多個參數,這些參數會自動以空格分隔後輸出。
print("Hello", "Python", "World")
執行結果
Hello Python World
使用變數來輸出資料
你也可以很簡單地使用變數來輸出資料。
name = "Alice"
age = 25
print("名字:", name, "年齡:", age)
執行結果
名字: Alice 年齡: 25
print()
函數的特色
- 可以將文字或數字顯示在標準輸出(例如終端機)上。
- 可以同時輸出多個參數,並自動以空格分隔。
- 預設會在輸出後自動換行(可調整)。
3. Java 的 println()
與 Python 的 print()
的差異
如果你曾經學習過 Java,可能會覺得 Python 的 print()
函數和 Java 的 System.out.println()
很類似。不過,它們之間還是有一些細節上的不同。
Java 中 println()
的用法
在 Java 中,如果你想要輸出資料到螢幕上,會使用 System.out.println()
。像以下這樣寫,就會在畫面上顯示「Hello, World!」,並在最後自動換行:
System.out.println("Hello, World!");
如果你想在不換行的情況下輸出內容,可以使用 System.out.print()
:
System.out.print("Hello");
System.out.print(" World");
執行結果
Hello World
與 Python 的 print()
的差異
Python 的 print()
函數預設同樣會在輸出後自動換行,但你也可以透過指定參數 end
來取消換行效果。
print("Hello", end="")
print(" World")
執行結果
Hello World
像這樣,在 Java 中會區分使用 println()
和 print()
,而在 Python 中,透過設定 end
的值就可以達成相同的效果。
Java 與 Python 的標準輸出比較表
語言 | 標準輸出函數 | 有換行 | 取消換行的方法 |
---|---|---|---|
Python | print("text") | 有 | print("text", end="") |
Java | System.out.println("text") | 有 | System.out.print("text") |
可以看到,Python 的 print()
函數具備高度的彈性,只要透過參數設定,就能模擬出 Java 中 println()
的行為。
4. print()
函數的進階應用
Python 的 print()
函數不僅可以用來簡單輸出文字,還能透過各種參數進行靈活的輸出控制。本章將介紹 print()
更進一步的用法。
4.1 使用 print()
輸出多個值
你可以用逗號(,
)同時傳入多個值給 print()
函數。這些值在輸出時,會自動以空格分隔。
範例
print("Python", "is", "awesome")
執行結果
Python is awesome
也可以混合輸出數字與文字:
age = 25
print("我今年", age, "歲")
執行結果
我今年 25 歲
4.2 使用 print()
的字串格式化
在 Python 中,有多種方式可以格式化字串來進行輸出。
(1) 使用 format()
方法
name = "Alice"
age = 25
print("名字: {}, 年齡: {}".format(name, age))
執行結果
名字: Alice, 年齡: 25
(2) 使用 f-string(建議 Python 3.6 以上)
name = "Alice"
age = 25
print(f"名字: {name}, 年齡: {age}")
執行結果
名字: Alice, 年齡: 25
✅ 使用 f
字串能提高可讀性,且更直觀易懂!
4.3 使用 print()
防止換行
預設情況下,print()
函數會在輸出後自動換行。不過,你可以透過 end
參數來取消這個行為。
範例
print("Hello", end="")
print(" World")
執行結果
Hello World
✅ 使用 end=""
時,可以在同一行連續輸出文字,非常實用!
4.4 更改 print()
的分隔符(separator)
當 print()
輸出多個值時,預設使用空格分隔。你可以透過 sep
參數來自定義分隔符。
範例
print("Python", "Java", "C++", sep=", ")
執行結果
Python, Java, C++
✅ 當你需要用逗號、斜線等符號分隔輸出時非常方便!
4.5 將 print()
的輸出寫入檔案
使用 print()
函數的 file
參數,可以將輸出寫入檔案而非直接顯示在螢幕上。
範例
with open("output.txt", "w") as f:
print("這行文字會被寫入檔案。", file=f)
✅ 只要加上 file=f
,就可以將輸出寫入指定檔案!
4.6 立即輸出內容(取消緩衝)
預設情況下,Python 的 print()
有輸出緩衝行為。若你希望即時輸出資料,可以使用 flush=True
。
範例
import time
for i in range(5):
print(i, end=" ", flush=True)
time.sleep(1)
執行結果(每秒輸出一次)
0 1 2 3 4
✅ 若你需要顯示即時進度或即時記錄,flush=True
非常實用!
4.7 將 print()
的輸出儲存成變數(使用 sys.stdout
)
通常 print()
的輸出會顯示在螢幕上,但你也可以透過 sys.stdout
將輸出結果儲存到變數中。
範例
import sys
from io import StringIO
# 暫時捕捉輸出
old_stdout = sys.stdout
sys.stdout = mystdout = StringIO()
print("這是被捕捉的輸出")
# 還原原本的標準輸出
sys.stdout = old_stdout
output = mystdout.getvalue()
print("儲存的輸出內容:", output)
執行結果
儲存的輸出內容: 這是被捕捉的輸出
✅ 當你需要記錄程式輸出內容時,這是一個非常實用的技巧!
5. 使用 print()
函數的注意事項與最佳實踐
雖然 Python 的 print()
函數非常方便且易於使用,但如果使用不當,可能會導致效能下降或讓除錯變得困難。本章將說明使用 print()
時應注意的事項,以及更有效率的使用方式。
5.1 使用 print()
時的注意事項
(1) 大量輸出會影響效能
當你在程式中大量使用 print()
時,可能會讓執行速度變慢。因為 print()
是 I/O 操作,頻繁輸出會影響效能。
❌ 不建議的寫法
for i in range(1000000):
print(i) # 每次都輸出,速度會很慢
✅ 改善方式
output = "\n".join(str(i) for i in range(1000000))
print(output)
✅ 使用 join()
一次性輸出大量資料,能大幅提升效率!
(2) 過度使用 print()
來除錯
雖然使用 print()
來除錯很常見,但若過度依賴,會讓程式變得混亂。建議改用專門的除錯工具。
❌ 不建議的寫法
print("除錯訊息: 變數 x =", x)
✅ 使用 logging
模組
import logging
logging.basicConfig(level=logging.DEBUG)
x = 10
logging.debug(f"除錯訊息: 變數 x = {x}")
✅ 使用 logging
可以根據等級管理輸出訊息,更有彈性!
(3) 明確管理 print()
的輸出位置
預設情況下,print()
是輸出到終端機。如果你想輸出到其他地方(例如檔案),可以使用 file
參數。
將日誌儲存到檔案
with open("log.txt", "w") as f:
print("這段日誌會被寫入檔案", file=f)
✅ 輸出到檔案可讓日誌管理更方便,適合長時間執行的程式!
5.2 print()
函數的最佳實踐
(1) 善用 f-string(格式化字串)
在 Python 3.6 之後,建議使用 f
字串來進行字串格式化,讓程式碼更簡潔易讀。
❌ 不建議的寫法
print("名字: " + name + ", 年齡: " + str(age))
✅ 建議的寫法
print(f"名字: {name}, 年齡: {age}")
✅ 使用 f
字串讓程式碼更直觀、更容易維護!
(2) 使用 end
參數來避免不必要的換行
預設 print()
會在輸出後自動換行。如果你不想換行,可以透過 end
自行控制。
❌ 不建議的寫法
print("處理中...")
print("完成!")
✅ 建議的寫法
print("處理中...", end="")
print("完成!")
輸出結果
處理中...完成!
✅ 使用 end
讓輸出更簡潔,避免過多換行!
(3) 使用 sep
自訂輸出分隔符
當 print()
輸出多個參數時,預設使用空格分隔。透過 sep
參數可以設定你想要的分隔符。
範例:以逗號分隔
print("Apple", "Banana", "Cherry", sep=", ")
輸出結果
Apple, Banana, Cherry
✅ 自訂分隔符可以讓輸出格式更貼近實際需求!
(4) 即時輸出進度(使用 flush=True
)
有時候你希望輸出不經過緩衝,立即顯示(例如進度更新)。這時可以使用 flush=True
。
範例
import time
for i in range(3):
print(f"處理中 {i+1}/3...", end="\r", flush=True)
time.sleep(1)
輸出(每秒更新一次)
處理中 1/3...
處理中 2/3...
處理中 3/3...
✅ 用於即時顯示進度或訊息更新非常有效!
總結
在本章中,我們介紹了使用 print()
函數時應注意的事項,以及提升效率的最佳實踐方法。
⚠ print()
使用時的注意事項
- 大量輸出會降低效能(建議使用
join()
批次處理) - 避免過度依賴
print()
進行除錯(改用logging
) - 根據需求指定輸出位置(可使用
file
輸出至檔案)
✅ print()
的最佳實踐
- 使用
f
字串讓格式更簡潔 - 善用
end
控制換行 - 透過
sep
自訂輸出格式 - 使用
flush=True
立即輸出
只要善用這些技巧,就能更有效率地控制 Python 的輸出行為。
6. 關於 print()
函數的常見問題(FAQ)
雖然 Python 的 print()
函數簡單好用,但初學者在使用時仍可能遇到一些常見困惑。本章整理了幾個常見問題與解答,幫助你快速釐清觀念。
Q1:Python 有 println
函數嗎?
A1: 沒有,Python 中沒有 println()
函數。你應該使用 print()
函數來輸出內容。
像 Java 的 System.out.println()
那樣在輸出後自動換行,其實就是 Python print()
的預設行為。
Python 範例
print("Hello, World!") # 預設會換行
Java 範例
System.out.println("Hello, World!"); // 預設也會換行
➡ Python 的 print()
自帶換行功能,效果就像 Java 的 println()
!
Q2:如何避免 print()
自動換行?
A2: 使用 end
參數,就能控制輸出結尾是否換行。
範例
print("Hello", end="")
print(" World")
輸出結果
Hello World
➡ 加上 end=""
,就可以在同一行連續輸出!
Q3:可以在 Python 中完全重現 Java 的 println()
行為嗎?
A3: 可以,只要使用 print()
並加上 end="\n"
(或不加,因為預設就是換行),就能模擬 Java 的 println()
。
範例
print("Hello, World!", end="\n") # 明確指定換行
➡ end="\n"
會在輸出後換行,等同 Java 的 println()
!
Q4:如何一次輸出多個變數?
A4: 只要用逗號 ,
分隔變數,就能一起輸出。
範例
name = "Alice"
age = 25
print("名字:", name, "年齡:", age)
輸出結果
名字: Alice 年齡: 25
如果想讓格式更美觀,可使用 f-string:
print(f"名字: {name}, 年齡: {age}")
➡ 使用 f-string 更直觀,也方便閱讀!
Q5:如何將 print()
輸出寫入檔案?
A5: 使用 file
參數,就能把輸出寫入指定檔案。
範例
with open("output.txt", "w") as f:
print("這段內容會寫入檔案", file=f)
✅ 只要指定 file=f
,就能把輸出內容導向檔案!
Q6:不使用 print()
,還能怎麼輸出資料?
A6: 可以使用 sys.stdout.write()
來達成。
範例
import sys
sys.stdout.write("Hello, World!\n")
➡ sys.stdout.write()
可提供更細緻的輸出控制!
Q7:使用 print()
時出現錯誤是什麼原因?
A7: 常見錯誤與解法如下:
(1) TypeError: can only concatenate str (not "int") to str
原因: 嘗試將字串與整數直接用 +
連接時會發生錯誤。
錯誤範例
print("年齡: " + 25) # 錯誤!
正確寫法: 使用 str()
將整數轉為字串:
print("年齡: " + str(25))
(2) SyntaxError: Missing parentheses in call to 'print'
原因: 使用了 Python 2 的寫法,在 Python 3 中會出錯。
錯誤範例
print "Hello, World!" # Python 2 的寫法
正確寫法: Python 3 必須加上括號:
print("Hello, World!")
✅ 在 Python 3 中,print
一定要加上括號!
Q8:不使用 print()
要如何進行除錯?
A8: 建議使用 logging
模組來進行除錯輸出,更專業且可控。
範例
import logging
logging.basicConfig(level=logging.DEBUG)
x = 42
logging.debug(f"變數 x 的值: {x}")
➡ 使用 logging
可以更有效率地管理除錯訊息!
7. 總結
本篇文章從 Python 的 print()
函數基礎到進階用法,詳細說明了它與 Java 的 println()
的差異,並介紹了實用的選項設定、最佳實踐,以及常見問題解答。以下是重點回顧。
7.1 Python print()
函數的基本
- 在 Python 中沒有
println()
函數,取而代之的是print()
。 print()
函數預設會自動換行。
print("Hello, World!") # 輸出後會自動換行
- 可以同時輸出多個值(預設用空格分隔)
print("Python", "is", "awesome")
7.2 Java println()
與 Python print()
的差異
語言 | 標準輸出函數 | 有換行 | 無換行方式 |
---|---|---|---|
Python | print("text") | 有 | print("text", end="") |
Java | System.out.println("text") | 有 | System.out.print("text") |
✅ Python 的 print()
功能幾乎等同於 Java 的 println()
✅ 從基本用法到進階操作皆可對應
7.3 print()
函數的進階應用
功能 | 用法 | 程式碼範例 |
---|---|---|
取消換行 | 使用 end | print("Hello", end="") |
自訂分隔符 | 使用 sep | print("Python", "Java", sep=", ") |
字串格式化 | 建議使用 f-string | print(f"名字: {name}, 年齡: {age}") |
輸出到檔案 | 使用 file 參數 | print("記錄內容", file=open("log.txt", "w")) |
即時輸出 | 使用 flush=True | print("處理中...", flush=True) |
✅ print()
支援豐富的選項,可靈活應對多種輸出需求!
7.4 使用 print()
時的注意事項
- 大量輸出會影響效能
output = "\n".join(str(i) for i in range(1000000))
print(output) # 一次性輸出加快速度
- 除錯建議使用
logging
模組
import logging
logging.basicConfig(level=logging.INFO)
logging.info("這是除錯訊息")
- 要輸出到非終端機時,可使用
sys.stdout
import sys
sys.stdout.write("Hello, World!\n")
✅ 根據使用情境選擇合適的方法,可寫出更高效的程式碼!
7.5 常見問題(FAQ)整理
問題 | 解答 |
---|---|
Python 有 println() 嗎? | 沒有,請使用 print() 。 |
如何避免換行? | 使用 print("Hello", end="") 。 |
要模擬 Java 的 println() 怎麼做? | 使用 print("text", end="\n") 。 |
如何將輸出寫入檔案? | print("內容", file=open("file.txt", "w")) |
遇到 TypeError 怎麼辦? | 將數字轉成字串(用 str() )。 |
適合用 print() 來除錯嗎? | 建議改用 logging 模組。 |
✅ 釐清常見問題後,使用 print()
會更得心應手!
7.6 推薦進一步學習的主題
在熟悉 print()
函數後,以下主題是進一步學習的重要方向:
- 使用
logging
模組進行日誌紀錄
import logging
logging.basicConfig(level=logging.INFO)
logging.info("這是一筆 INFO 日誌")
- 標準輸入/輸出(
sys.stdin
,sys.stdout
,sys.stderr
)
import sys
sys.stdout.write("Hello, World!\n")
- 檔案 I/O(
open()
的使用方法)
with open("output.txt", "w") as f:
f.write("這是寫入檔案的內容")
- Python 除錯技巧
import pdb; pdb.set_trace() # 設定中斷點
✅ 掌握這些進階主題後,就能更有效率地撰寫與除錯 Python 程式!
7.7 結語
✅ Python 的 print()
具備與 Java println()
同等功能
✅ 從基本到進階的用法完整掌握
✅ 善用 end
和 sep
可實現靈活輸出
✅ 考慮效能與除錯需求時,選擇最合適的輸出方式