Python 有 println() 嗎?深入解析與 print() 的差異、用法與應用!

目次

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 的標準輸出比較表

語言標準輸出函數有換行取消換行的方法
Pythonprint("text")print("text", end="")
JavaSystem.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)

執行結果

儲存的輸出內容: 這是被捕捉的輸出

✅ 當你需要記錄程式輸出內容時,這是一個非常實用的技巧!

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

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 可以更有效率地管理除錯訊息!

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

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() 的差異

語言標準輸出函數有換行無換行方式
Pythonprint("text")print("text", end="")
JavaSystem.out.println("text")System.out.print("text")

Python 的 print() 功能幾乎等同於 Java 的 println()
從基本用法到進階操作皆可對應

7.3 print() 函數的進階應用

功能用法程式碼範例
取消換行使用 endprint("Hello", end="")
自訂分隔符使用 sepprint("Python", "Java", sep=", ")
字串格式化建議使用 f-stringprint(f"名字: {name}, 年齡: {age}")
輸出到檔案使用 file 參數print("記錄內容", file=open("log.txt", "w"))
即時輸出使用 flush=Trueprint("處理中...", flush=True)

print() 支援豐富的選項,可靈活應對多種輸出需求!

7.4 使用 print() 時的注意事項

  1. 大量輸出會影響效能
output = "\n".join(str(i) for i in range(1000000))
print(output)  # 一次性輸出加快速度
  1. 除錯建議使用 logging 模組
import logging
logging.basicConfig(level=logging.INFO)
logging.info("這是除錯訊息")
  1. 要輸出到非終端機時,可使用 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() 函數後,以下主題是進一步學習的重要方向:

  1. 使用 logging 模組進行日誌紀錄
import logging
logging.basicConfig(level=logging.INFO)
logging.info("這是一筆 INFO 日誌")
  1. 標準輸入/輸出(sys.stdin, sys.stdout, sys.stderr
import sys
sys.stdout.write("Hello, World!\n")
  1. 檔案 I/O(open() 的使用方法)
with open("output.txt", "w") as f:
    f.write("這是寫入檔案的內容")
  1. Python 除錯技巧
import pdb; pdb.set_trace()  # 設定中斷點

掌握這些進階主題後,就能更有效率地撰寫與除錯 Python 程式!

7.7 結語

Python 的 print() 具備與 Java println() 同等功能
從基本到進階的用法完整掌握
善用 endsep 可實現靈活輸出
考慮效能與除錯需求時,選擇最合適的輸出方式