Python print 函數的 20 種創(chuàng)意用法揭秘
今天我們要一起探索的是那個看似簡單卻藏著無限可能的小函數——print()。別看它日常,一旦掌握了它的創(chuàng)意用法,你的代碼不僅能說話,還能唱歌跳舞呢!讓我們一起,從基礎到高階,解鎖print()的新世界。
1. 基礎打印
最基本,但也是最常用的,打印文本或變量。
message = "你好,世界!"
print(message)
解讀:這是打印的起點,告訴計算機“我要展示這個信息”。
2. 多個參數
一次打印多個內容,用逗號分隔。
print("Python", "是", "有趣的")
效果:Python 是 有趣的,逗號自動添加了空格。
3. 格式化字符串(f-string,Python 3.6+)
讓變量直接嵌入字符串。
name = "小明"
print(f"歡迎,{name}!")
亮點:清晰,直觀。
4. 使用sep參數
改變多個參數間的分隔符。
print("蘋果", "香蕉", "橙子", sep=", ")
結果:蘋果, 香蕉, 橙子,適合制作列表。
5. end參數控制結束符號
默認是換行,但我們可以改。
print("不換行的問候", end=" ")
print("繼續(xù)")
注意:這樣可以連續(xù)輸出在同一行。
6. 打印空行
利用換行特性,打印空行。
print()
簡單,但有時候就是這么需要。
7. 數字格式化
結合f-string或.format(),精確控制數字顯示。
pi = 3.14159
print(f"{pi:.2f}") # 保留兩位小數
科學:讓數字展現得既美觀又準確。
8. 列表打印
一行打印列表元素,用join美化。
fruits = ["蘋果", "香蕉", "橙子"]
print(", ".join(fruits))
優(yōu)雅:讓列表元素成為一句話。
9. 循環(huán)中的print
遍歷列表時逐行打印。
for fruit in fruits:
print(fruit)
動態(tài):適合展示循環(huán)過程。
10. 條件打印
根據條件決定是否打印。
age = 18
if age >= 18:
print("成年了!")
邏輯:讓代碼有選擇地發(fā)言。
11. 不同編碼的打印
處理非UTF-8編碼的文本。
print("你好,世界!".encode('utf-8').decode('gbk'))
跨文化:在不同編碼間游刃有余。
12. 遞歸打印
用遞歸展示數字序列。
def recursive_print(n):
if n > 0:
print(n)
recursive_print(n-1)
recursive_print(5)
深入:理解遞歸,打印出倒序數字。
13. 使用sys.stdout.write()
更底層的打印方式,不自動換行。
import sys
sys.stdout.write("直接寫入,不換行")
控制:適合需要精細控制輸出流的情況。
14. 打印進度條
模擬下載進度。
for i in range(101):
progress = "#" * i + " " * (100-i)
print(f"\r下載進度: {progress}", end="")
動態(tài):直觀的進度展示,提升用戶體驗。
15. 打印彩色文本(終端支持)
利用ANSI轉義碼。
print("\033[31m紅色文字\033[0m")
美化:給終端一點顏色看看!
16. 打印時間戳
實時獲取當前時間。
from datetime import datetime
print(datetime.now())
記錄:打印出代碼運行的時間點。
17. 利用print調試
打印變量值,輔助調試。
def mystery_function(x):
print(f"輸入是{x}")
return x*2
實用:快速理解函數內部發(fā)生了什么。
18. 無輸出的print
pass語句配合print,用于占位。
def later():
print("正在開發(fā)...")
pass
占位:清晰表明意圖,而不影響程序執(zhí)行。
19. 打印異常信息
捕獲異常時打印錯誤詳情。
try:
1/0
except Exception as e:
print(e)
安全:優(yōu)雅處理錯誤,知道哪里出了問題。
20. 重定向print輸出
將輸出導向文件。
with open("output.txt", "w") as file:
print("這是輸出到文件的內容", file=file)
持久:將信息保存,便于后續(xù)查看。
實戰(zhàn)案例分析
案例1:日志記錄系統(tǒng)
目標:創(chuàng)建一個簡單的日志記錄器,記錄程序運行的關鍵信息到文件和控制臺。
def log_message(message, log_file="app.log"):
with open(log_file, "a") as file:
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"[{timestamp}] {message}", file=file)
print(f"[{timestamp}] {message}")
log_message("程序開始執(zhí)行")
# 程序其他部分...
log_message("關鍵任務完成")
解讀:這里結合了打印到控制臺和文件的技術,以及時間戳的生成,非常適合于監(jiān)控程序狀態(tài)。
練習技巧方法提示
練習:嘗試修改上面的log_message函數,使其能區(qū)分不同的日志級別(如INFO、WARNING、ERROR),并以不同顏色打印到控制臺。
使用技巧與注意事項
- 效率:在大量數據處理或高性能要求的代碼中,頻繁使用print可能會影響性能,考慮使用日志模塊(logging)代替。
- 安全性:在涉及用戶輸入的場景下,避免直接print未經驗證的數據,以防注入攻擊。
- 可讀性:合理利用print進行調試,但最終的代碼應減少不必要的輸出,保持整潔。
進階探索:自定義打印函數
創(chuàng)建一個更強大的打印函數,支持更多定制化需求,比如控制輸出顏色、格式等。
def custom_print(msg, color="white", file=sys.stdout):
colors = {
'white': '\033[0m',
'red': '\033[91m',
'green': '\033[92m',
'blue': '\033[94m'
}
print(f"{colors[color]}{msg}\033[0m", file=file)
custom_print("這是藍色的文字", color="blue")
總結:通過這些實戰(zhàn)技巧和深入理解,你不僅學會了如何創(chuàng)造性地使用print函數,還能在實際項目中靈活運用,提升代碼的可讀性和功能性。