【Python-Day 5】Python 格式化輸出實戰:%、format()、f-string 對比與最佳實踐

Langchain系列文章目錄

01-玩轉LangChain:從模型調用到Prompt模板與輸出解析的完整指南
02-玩轉 LangChain Memory 模塊:四種記憶類型詳解及應用場景全覆蓋
03-全面掌握 LangChain:從核心鏈條構建到動態任務分配的實戰指南
04-玩轉 LangChain:從文檔加載到高效問答系統構建的全程實戰
05-玩轉 LangChain:深度評估問答系統的三種高效方法(示例生成、手動評估與LLM輔助評估)
06-從 0 到 1 掌握 LangChain Agents:自定義工具 + LLM 打造智能工作流!
07-【深度解析】從GPT-1到GPT-4:ChatGPT背后的核心原理全揭秘

PyTorch系列文章目錄

機器學習系列文章目錄

Python系列文章目錄

01-【Python-Day 1】告別編程恐懼:輕松掌握 Python 安裝與第一個程序的 6 個步驟
02-【Python-Day 2】掌握Python基石:變量、內存、標識符及int/float/bool數據類型
03-【Python-Day 3】玩轉文本:字符串(String)基礎操作詳解 (上)
04-【Python-Day 4】玩轉文本:Python 字符串常用方法深度解析 (下篇)
05-【Python-Day 5】Python 格式化輸出實戰:%、format()、f-string 對比與最佳實踐


文章目錄

  • Langchain系列文章目錄
  • PyTorch系列文章目錄
  • 機器學習系列文章目錄
  • Python系列文章目錄
  • 前言
  • 一、為什么需要格式化輸出?
    • 1.1 簡單打印的局限性
    • 1.2 格式化輸出的優勢
  • 二、Python 字符串格式化方法概覽
    • 2.1 歷史的足跡:舊式 % 格式化
      • 2.1.1 基本語法與示例
      • 2.1.2 常用轉換說明符
      • 2.1.3 優點與缺點
    • 2.2 承前啟后:`str.format()` 方法
      • 2.2.1 基本語法與示例
      • 2.2.2 格式規范迷你語言
      • 2.2.3 優點與缺點
    • 2.3 現代之選:f-string (Python 3.6+)
      • 2.3.1 語法簡潔性與直觀性
      • 2.3.2 基本用法與示例
      • 2.3.3 f-string 內嵌表達式
      • 2.3.4 推薦使用的原因
  • 三、常用格式控制詳解
    • 3.1 對齊控制 (Alignment)
      • 3.1.1 左對齊 (`<`)
      • 3.1.2 右對齊 (`>`)
      • 3.1.3 居中對齊 (`^`)
      • 3.1.4 填充字符
    • 3.2 精度控制 (Precision)
      • 3.2.1 浮點數精度 (`.nf`)
      • 3.2.2 字符串最大寬度 (`.ns`)
    • 3.3 類型控制 (Type)
      • 3.3.1 字符串 (`s`)
      • 3.3.2 整數 (`d`, `b`, `o`, `x`, `X`)
      • 3.3.3 浮點數 (`f`, `e`, `E`, `g`, `G`, `%`)
      • 3.3.4 結合使用示例
  • 四、場景應用與避坑指南
    • 4.1 實際應用場景示例
    • 4.2 常見問題與陷阱
    • 4.3 選擇哪種格式化方法?
  • 五、總結


前言

大家好,歡迎來到 Python 學習之旅的第五天!在前幾天的學習中,我們掌握了 Python 的基礎語法、變量、數據類型以及強大的字符串操作。然而,僅僅能夠處理和操作字符串是不夠的,如何將這些數據以清晰、美觀、專業的方式展示出來,同樣至關重要。想象一下,如果你需要打印一份報告、生成一段日志或者向用戶顯示一條信息,雜亂無章的輸出會大大降低可讀性。本篇文章將聚焦于 Python 中的字符串格式化技術,教你如何優雅地控制輸出格式,讓你的打印內容煥然一新!我們將從經典的 % 格式化講起,逐步過渡到功能更強大的 str.format() 方法,最后重點介紹 Python 3.6+ 版本中備受推崇的 f-string。同時,我們還會深入探討常用的格式控制符,如對齊、精度和類型轉換,助你徹底掌握格式化輸出的精髓。

一、為什么需要格式化輸出?

在正式學習格式化方法之前,我們先來思考一個問題:為什么 Python 內置了 print() 函數還不夠,我們還需要專門學習字符串格式化呢?

1.1 簡單打印的局限性

使用基本的 print() 函數和字符串拼接(+)雖然也能組合輸出,但在處理多個變量或不同數據類型時,代碼會顯得非常冗長和混亂,而且容易出錯。

示例:

name = "Alice"
age = 30
city = "New York"# 使用 + 拼接,需要手動轉換非字符串類型
print("User Info: Name: " + name + ", Age: " + str(age) + ", City: " + city)# 輸出: User Info: Name: Alice, Age: 30, City: New York# 如果變量很多,拼接會變得非常復雜且難以閱讀
score = 95.5
is_active = True
print("Detail: " + name + " scored " + str(score) + " and is currently " + ("active" if is_active else "inactive") + ".")# 輸出: Detail: Alice scored 95.5 and is currently active.

從上面的例子可以看出,簡單的拼接不僅代碼可讀性差,還需要頻繁使用 str() 進行類型轉換,非常不便。

1.2 格式化輸出的優勢

字符串格式化提供了一種更優雅、更強大、更易讀的方式來構建包含變量的字符串。其主要優勢包括:

  1. 提高可讀性: 將模板字符串與要插入的值分開,結構更清晰。
  2. 簡化類型轉換: 大多數格式化方法會自動處理不同數據類型的轉換。
  3. 精確控制格式: 可以輕松控制數字的精度、文本的對齊方式、填充字符等。
  4. 代碼更簡潔: 相較于繁瑣的拼接,格式化通常需要更少的代碼。
  5. 易于維護: 當需要修改輸出格式或變量時,格式化字符串更容易調整。

接下來,我們將詳細介紹 Python 中三種主要的字符串格式化方法。

二、Python 字符串格式化方法概覽

Python 提供了多種方式來進行字符串格式化,主要有以下三種:

  1. 舊式 % 格式化: 源自 C 語言的 printf 風格,歷史悠久。
  2. str.format() 方法: Python 2.6 引入,功能更強大、更靈活。
  3. f-string (格式化字符串字面值): Python 3.6 引入,目前最推薦的方式,簡潔高效。

2.1 歷史的足跡:舊式 % 格式化

這種方式使用 % 操作符連接一個模板字符串和一個或多個值(通常放在元組或字典中)。模板字符串中使用 % 加上特定的轉換說明符(如 %s 表示字符串,%d 表示整數,%f 表示浮點數)作為占位符。

2.1.1 基本語法與示例

語法: template_string % values

示例:

name = "Bob"
age = 25
height = 1.75# 使用元組傳遞值
formatted_string_tuple = "Name: %s, Age: %d, Height: %.2f meters" % (name, age, height)
print(formatted_string_tuple)
# 輸出: Name: Bob, Age: 25, Height: 1.75 meters# 使用字典傳遞值 (通過名稱引用)
user_data = {"user_name": "Charlie", "user_age": 40}
formatted_string_dict = "User: %(user_name)s, Age: %(user_age)d" % user_data
print(formatted_string_dict)
# 輸出: User: Charlie, Age: 40

2.1.2 常用轉換說明符

說明符轉換示例
%s字符串 (或任何對象,會調用 str())'Hello'
%d十進制整數123
%f浮點數 (默認保留 6 位小數)3.141593
%.nf浮點數 (保留 n 位小數)%.2f -> 3.14
%e科學計數法 (小寫 ‘e’)3.14e+00
%E科學計數法 (大寫 ‘E’)3.14E+00
%g根據值自動選擇 %f%e
%G根據值自動選擇 %f%E
%%輸出一個 % 字符%

2.1.3 優點與缺點

  • 優點: 語法相對簡單,對于源自 C/C++ 背景的開發者比較熟悉。
  • 缺點:
    • 可讀性較差,尤其是當占位符和變量數量較多時,對應關系不直觀。
    • 類型匹配需要嚴格,若類型不符(如用 %d 格式化字符串)會直接報錯 TypeError
    • 功能相對有限,不如后續方法靈活。

由于這些缺點,不推薦在新的 Python 代碼中使用 % 格式化,但了解它有助于閱讀舊代碼。

2.2 承前啟后:str.format() 方法

為了克服 % 格式化的不足,Python 2.6 引入了 str.format() 方法。它使用花括號 {} 作為占位符,并通過 format() 方法傳入要替換的值。

2.2.1 基本語法與示例

語法: template_string.format(value1, value2, ...)template_string.format(key1=value1, key2=value2, ...)

示例:

name = "David"
age = 35
pi = 3.1415926# 按位置順序填充
formatted_pos = "Name: {}, Age: {}, Pi: {}".format(name, age, pi)
print(formatted_pos)
# 輸出: Name: David, Age: 35, Pi: 3.1415926# 按索引填充 (可以改變順序或重復使用)
formatted_idx = "Age: {1}, Name: {0}, Age again: {1}".format(name, age)
print(formatted_idx)
# 輸出: Age: 35, Name: David, Age again: 35# 按關鍵字填充 (更易讀)
formatted_kw = "User {username} is {userage} years old.".format(username="Eve", userage=28)
print(formatted_kw)
# 輸出: User Eve is 28 years old.# 混合使用 (位置參數必須在前)
formatted_mix = "Name: {}, Age: {age}".format(name, age=age)
print(formatted_mix)
# 輸出: Name: David, Age: 35# 訪問對象的屬性或字典的鍵
class Point:def __init__(self, x, y):self.x = xself.y = y
p = Point(10, 20)
data = {"city": "London", "country": "UK"}formatted_attr = "Point coordinates: ({p.x}, {p.y})".format(p=p)
print(formatted_attr)
# 輸出: Point coordinates: (10, 20)formatted_dict_key = "Location: {d[city]}, {d[country]}".format(d=data)
print(formatted_dict_key)
# 輸出: Location: London, UK

2.2.2 格式規范迷你語言

str.format() 的強大之處在于花括號 {} 內部可以包含格式規范迷你語言 (Format Specification Mini-Language),用來精確控制輸出格式。基本語法是 {:[[fill]align][sign][#][0][width][,][.precision][type]}。我們將在第三部分詳細講解常用的控制符。

簡單示例:

pi = 3.1415926# 控制小數位數
formatted_precision = "Pi approximation: {:.2f}".format(pi)
print(formatted_precision)
# 輸出: Pi approximation: 3.14# 控制寬度和對齊
name = "Alice"
formatted_align = "Name: {:>10}".format(name) # 右對齊,總寬度10
print(formatted_align)
# 輸出: Name:      Alice

2.2.3 優點與缺點

  • 優點:
    • % 格式化更易讀,特別是使用關鍵字參數時。
    • 功能更強大,支持更復雜的格式控制。
    • 更靈活,可以通過索引、名稱、屬性、字典鍵等方式引用變量。
  • 缺點:
    • 語法相對于 f-string 來說還是有些冗長。

str.format() 是一個功能完備且兼容性好的選擇(兼容 Python 2.6+ 和 3.x)。

2.3 現代之選:f-string (Python 3.6+)

f-string(格式化字符串字面值)是 Python 3.6 引入的新特性,旨在提供一種更簡潔、更直觀、性能也通常更好的字符串格式化方式。

2.3.1 語法簡潔性與直觀性

f-string 的語法非常簡單:在字符串字面量前面加上字母 fF,然后在花括號 {} 內直接寫入變量名或表達式。

語法: f"text {variable} text {expression} text"

2.3.2 基本用法與示例

name = "Frank"
age = 42
pi = 3.1415926formatted_fstring = f"User {name} is {age} years old. Pi is approximately {pi}."
print(formatted_fstring)
# 輸出: User Frank is 42 years old. Pi is approximately 3.1415926.

可以看到,代碼非常簡潔,變量直接嵌入字符串中,可讀性極高。

2.3.3 f-string 內嵌表達式

f-string 的花括號內不僅可以放變量,還可以放任何有效的 Python 表達式。

x = 10
y = 5formatted_expr = f"Sum: {x + y}, Product: {x * y}, Is x > y? {x > y}"
print(formatted_expr)
# 輸出: Sum: 15, Product: 50, Is x > y? True# 也可以調用函數
def greet(name):return f"Hello, {name.capitalize()}!"formatted_func = f"{greet('grace')}"
print(formatted_func)
# 輸出: Hello, Grace!

2.3.4 推薦使用的原因

  • 簡潔易讀: 語法最接近自然語言,代碼清晰。
  • 性能優越: 通常比 str.format()% 格式化更快,因為它們在編譯時處理。
  • 功能強大: 支持與 str.format() 相同的格式規范迷你語言。
  • 方便調試: 如果花括號內的表達式出錯,錯誤信息通常更直接。

強烈推薦在 Python 3.6 及以上版本中使用 f-string 進行字符串格式化。

三、常用格式控制詳解

無論是 str.format() 還是 f-string,它們都支持一套強大的格式規范迷你語言 (Format Specification Mini-Language) 來控制輸出的細節。格式規范位于花括號 {} 內,緊跟在變量名或表達式之后,并以冒號 : 分隔。

基本結構::[[fill]align][sign][#][0][width][,][.precision][type]

我們重點關注其中最常用的幾個部分:對齊、精度和類型。

3.1 對齊控制 (Alignment)

用于控制字符串在給定寬度內的對齊方式。需要配合 width(最小總寬度)使用。

對齊符含義示例 (width=10)
<左對齊f"{'text':<10}" -> text
>右對齊f"{'text':>10}" -> text
^居中對齊f"{'text':^10}" -> text

3.1.1 左對齊 (<)

name = "Leo"
width = 10# 使用 format()
print("'{0:<{1}}'".format(name, width)) # '{0:<10}'.format(name)
# 使用 f-string
print(f"'{name:<{width}}'")            # f"'{name:<10}'"# 輸出:
# 'Leo       '
# 'Leo       '

3.1.2 右對齊 (>)

name = "Mia"
width = 10# 使用 format()
print("'{0:>{1}}'".format(name, width))
# 使用 f-string
print(f"'{name:>{width}}'")# 輸出:
# '       Mia'
# '       Mia'

3.1.3 居中對齊 (^)

name = "Noah"
width = 10# 使用 format()
print("'{0:^{1}}'".format(name, width))
# 使用 f-string
print(f"'{name:^{width}}'")# 輸出:
# '   Noah   '
# '   Noah   '

3.1.4 填充字符

可以在對齊符號前指定一個字符用于填充空白區域(默認為空格)。

name = "Zoe"
width = 10
fill_char = '*'# 使用 format()
print("'{0:*^{1}}'".format(name, width)) # 居中對齊,用 * 填充
# 使用 f-string
print(f"'{name:*^{width}}'")            # 同上# 輸出:
# '***Zoe****'
# '***Zoe****'# 右對齊,用 0 填充(常用于數字)
num = 123
print(f"{num:0>8}") # 注意,對于數字,0 有特殊含義(見下文),但這里放在 > 前,表示填充# 輸出: 00000123

注意: 如果指定了 0 作為格式說明符的一部分(如 08d),它表示用 0 填充 并且 應用于數字類型,此時它通常結合寬度使用,不需要顯式指定對齊(默認右對齊)。如 f"{num:08d}" 效果同 f"{num:0>8d}"

3.2 精度控制 (Precision)

主要用于控制浮點數的小數位數或字符串的最大顯示寬度。用點號 . 后跟一個整數表示。

3.2.1 浮點數精度 (.nf)

指定浮點數輸出時保留的小數位數 n。會進行四舍五入。

pi = 3.1415926535# 使用 format()
print("Pi: {:.3f}".format(pi)) # 保留 3 位小數
# 使用 f-string
print(f"Pi: {pi:.3f}")         # 同上# 輸出:
# Pi: 3.142
# Pi: 3.142# 結合寬度和對齊
print(f"'{pi:10.2f}'") # 總寬度 10,保留 2 位小數,默認右對齊
# 輸出: '      3.14'

3.2.2 字符串最大寬度 (.ns)

指定字符串輸出時的最大字符數 n。如果原字符串超過此長度,會被截斷。

long_text = "This is a very long string."
max_width = 10# 使用 format()
print("'{:.{}}'".format(long_text, max_width)) # '{:.10}'.format(long_text)
# 使用 f-string
print(f"'{long_text:.{max_width}}'")           # f"'{long_text:.10}'"# 輸出:
# 'This is a '
# 'This is a '

3.3 類型控制 (Type)

指定變量應被視為哪種類型進行格式化。

3.3.1 字符串 (s)

這是默認類型,通常可以省略。會將對象轉換為字符串(調用 str())。

name = "Olivia"
age = 22
print(f"Name: {name:s}, Age: {age:s}") # :s 可以省略
# 輸出: Name: Olivia, Age: 22

3.3.2 整數 (d, b, o, x, X)

  • d: 十進制整數 (Decimal) - 默認整數類型
  • b: 二進制 (Binary)
  • o: 八進制 (Octal)
  • x: 十六進制 (Hexadecimal, 小寫 a-f)
  • X: 十六進制 (Hexadecimal, 大寫 A-F)
num = 42print(f"Decimal: {num:d}")     # Decimal: 42
print(f"Binary: {num:b}")      # Binary: 101010
print(f"Octal: {num:o}")       # Octal: 52
print(f"Hex (lower): {num:x}") # Hex (lower): 2a
print(f"Hex (upper): {num:X}") # Hex (upper): 2A# 帶 # 前綴,顯示進制標識 (0b, 0o, 0x)
print(f"Binary with prefix: {num:#b}") # Binary with prefix: 0b101010
print(f"Hex with prefix: {num:#x}")    # Hex with prefix: 0x2a

3.3.3 浮點數 (f, e, E, g, G, %)

  • f: 定點表示法 (Fixed-point notation),默認 6 位小數。
  • e: 科學計數法 (Exponent notation),小寫 ‘e’。
  • E: 科學計數法 (Exponent notation),大寫 ‘E’。
  • g: 通用格式 (General format)。對于給定精度 p >= 1,它會格式化數字為定點表示法(如果指數在 -4 到 p-1 之間),否則格式化為科學計數法。默認精度為 6。
  • G: 通用格式 (General format),類似 g,但在科學計數法時使用大寫 ‘E’。
  • %: 百分比格式。將數字乘以 100,然后使用 f 格式顯示,并附加一個 % 號。
value = 12345.6789
ratio = 0.9876print(f"Fixed point: {value:f}")       # Fixed point: 12345.678900
print(f"Fixed point (2 dec): {value:.2f}") # Fixed point (2 dec): 12345.68
print(f"Exponent (lower): {value:e}")    # Exponent (lower): 1.234568e+04
print(f"Exponent (upper): {value:E}")    # Exponent (upper): 1.234568E+04
print(f"General (default): {value:g}")   # General (default): 12345.7 (默認精度6)
print(f"General (precision 8): {value:.8g}") # General (precision 8): 12345.679
print(f"Percentage (1 dec): {ratio:.1%}")   # Percentage (1 dec): 98.8%

3.3.4 結合使用示例

我們可以將對齊、寬度、精度、類型等控制符組合使用。

item = "Apple"
price = 1.25
quantity = 10# 目標:輸出類似表格的一行
# | Item     | Price  | Quantity | Total    |
# | :------- | -----: | -------: | -------: |
# | Apple    |   1.25 |       10 |    12.50 |header = f"| {'Item':<8} | {'Price':>6} | {'Quantity':>8} | {'Total':>8} |"
divider = "-" * len(header)
data_row = f"| {item:<8} | {price:>6.2f} | {quantity:>8d} | {price * quantity:>8.2f} |"print(header)
print(divider)
print(data_row)# 輸出:
# | Item     |  Price | Quantity |    Total |
# ---------------------------------------------
# | Apple    |   1.25 |       10 |    12.50 |

四、場景應用與避坑指南

4.1 實際應用場景示例

字符串格式化在各種編程任務中都非常有用:

  1. 生成報告: 創建格式整齊的文本報告,包含計算結果、統計數據等。
  2. 日志記錄: 輸出帶有時間戳、級別、模塊名等信息的結構化日志。
  3. 用戶界面: 在命令行或圖形界面中向用戶顯示格式化的信息、提示或錯誤。
  4. 數據導出: 將數據格式化為特定格式(如 CSV、固定寬度文本)以便其他系統讀取。
  5. 構建 SQL 查詢: (要特別注意 SQL 注入風險,通常使用參數化查詢更安全,但有時需要動態構建部分查詢結構)。

4.2 常見問題與陷阱

  1. % 格式化類型不匹配: 使用 % 時,如果占位符類型與提供的變量類型不兼容(例如 %d 用于字符串),會拋出 TypeErrorformat() 和 f-string 通常更寬容,會嘗試調用 __format__()str()
  2. str.format() 占位符與參數數量/名稱不匹配:
    • 使用位置參數時,提供的參數數量必須與占位符數量一致,否則 IndexError
    • 使用關鍵字參數時,如果 format() 調用中缺少某個占位符所需的關鍵字,會拋出 KeyError
  3. f-string 版本兼容性: f-string 是 Python 3.6+ 的特性。在舊版本 Python 中使用會產生 SyntaxError。如果需要兼容舊版本,應使用 str.format()
  4. 花括號 {} 的轉義: 如果想在格式化字符串中直接輸出花括號本身,需要使用雙花括號 {{}}
    # 使用 format()
    print("This shows curly braces: {{}}".format()) # 輸出: This shows curly braces: {}
    # 使用 f-string
    value = 42
    print(f"This includes a value {value} and literal braces {{}}")
    # 輸出: This includes a value 42 and literal braces {}
    
  5. f-string 內的反斜杠 \: 在 f-string 的表達式部分不能直接使用反斜杠 \ 進行換行或轉義(除非是字符串字面量內部)。
    # 錯誤示例:
    # my_string = f"This is a long string \
    #               split across lines." # SyntaxError# 正確做法 (在表達式外拆分或使用括號):
    part1 = "This is a long string"
    part2 = "split across lines."
    my_string = f"{part1} {part2}"
    print(my_string)my_list = [1, 2, 3]
    # 在表達式中使用括號可以換行
    my_string_expr = f"List sum: {sum([x*2 for x in my_list
    ])}"
    print(my_string_expr)
    

4.3 選擇哪種格式化方法?

  • 首選 f-string (Python 3.6+): 如果你的項目環境允許,f-string 因其簡潔、易讀和高效性成為最佳選擇。
  • 備選 str.format(): 當需要兼容 Python 2.6-3.5 版本,或者在某些特定場景(如模板字符串來源不確定,需要延遲格式化)下,str.format() 是一個強大且可靠的選擇。
  • 避免 % 格式化 (新代碼): 盡量不要在新的代碼中使用 % 格式化,除非是在維護必須兼容非常古老 Python 版本的舊代碼。

五、總結

今天我們深入學習了 Python 中讓輸出變得美觀專業的關鍵技術——字符串格式化。核心要點回顧如下:

  1. 格式化輸出的必要性: 克服了簡單 print() 和字符串拼接的局限性,提高了代碼的可讀性、簡潔性和可維護性,并能精確控制輸出樣式。
  2. 三種主要方法:
    • % 格式化: C printf 風格,語法簡單但功能有限、可讀性差,不推薦在新代碼中使用。
    • str.format(): Python 2.6+ 引入,功能強大,支持位置/關鍵字參數、索引、屬性訪問,使用 {} 占位符和格式規范迷你語言,是兼容性好的選擇。
    • f-string (格式化字符串字面值): Python 3.6+ 引入,在字符串前加 f,直接在 {} 內嵌入變量和表達式,語法最簡潔、可讀性最好、性能通常最優,是現代 Python 的首選
  3. f-string 的優勢: 簡潔直觀、性能好、支持完整格式規范、易于調試。
  4. 常用格式控制符: 掌握了 : 后面的格式規范迷你語言中的核心部分:
    • 對齊 (<, >, ^) 配合寬度和可選的填充字符。
    • 精度 (.n) 控制浮點數小數位數或字符串最大長度。
    • 類型 (d, s, f, e, g, %, b, o, x 等) 指定數據如何被解釋和顯示。
  5. 選擇建議: 優先使用 f-string,若需兼容舊版 Python 或有特殊需求則選用 str.format(),避免在新建項目中使用 % 格式化。

熟練掌握字符串格式化,不僅能讓你的程序輸出更加專業,也能在調試和展示數據時提供極大的便利。希望通過今天的學習,你能自信地運用這些技巧美化你的 Python 輸出!下一篇,我們將學習 Python 中的運算符,敬請期待!


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902983.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902983.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902983.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

R7周:糖尿病預測模型優化探索

&#x1f368; 本文為&#x1f517;365天深度學習訓練營中的學習記錄博客 &#x1f356; 原作者&#xff1a;K同學啊 一、數據預處理 1.設置GPU import torch.nn.functional as F import torch.nn as nn import torch, torchvisiondevice torch.device("cuda"…

使用Tortoise-ORM和FastAPI構建評論系統

title: 使用Tortoise-ORM和FastAPI構建評論系統 date: 2025/04/25 21:37:36 updated: 2025/04/25 21:37:36 author: cmdragon excerpt: 在models.py中定義了Comment模型,包含id、content、created_at、updated_at字段,并與User和Article模型建立外鍵關系。schemas.py中定義了…

【VS Code】如何使用SSH打開遠程服務器Docker上的項目或文件夾

要在VS Code中使用SSH打開遠程服務器Docker上的項目或文件夾&#xff0c;您需要結合使用VS Code的Remote - SSH擴展和Docker的遠程訪問功能。以下是詳細步驟&#xff1a; 安裝VS Code Remote - SSH擴展 打開VS Code。點擊左側活動欄的擴展圖標&#xff08;或使用快捷鍵CtrlShif…

NHANES指標推薦:PLP

文章題目&#xff1a;Association of pyridoxal 5-phosphate (PLP) with lipid profiles: a population-based cohort study DOI&#xff1a;10.3389/fnut.2025.1545301 中文標題&#xff1a;5-磷酸吡哆醛 (PLP) 與血脂譜的關系&#xff1a;一項基于人群的隊列研究 發表雜志&am…

MySQL 詳解之備份與恢復策略:數據安全的最后一道防線

在任何信息系統中,數據都是最寶貴的資產。數據的丟失可能源于多種原因:硬件故障、人為誤操作、軟件 Bug、惡意攻擊,甚至自然災害。一旦發生數據丟失,如果沒有有效的備份和恢復機制,后果可能是災難性的,可能導致業務中斷、經濟損失甚至法律責任。 數據庫備份與恢復,正是…

2026《數據結構》考研復習筆記五(棧、隊列)

棧、隊列 一、棧1.卡特蘭數2.不合法的出棧序列 二、隊列1.循環隊列2.輸入輸出受限隊列&#xff08;四個數1234&#xff09; 三、算法1.棧在括號匹配中的應用2.中綴表達式求值&#xff08;通過轉化為后綴表達式再后綴表達式求值&#xff09;3.中綴表達式轉化為后綴表達式4.后綴表…

深入解析微軟MarkitDown:原理、應用與二次開發指南

一、項目背景與技術定位 微軟開源的MarkitDown并非簡單的又一個Markdown解析器&#xff0c;而是針對現代文檔處理需求設計的工具鏈核心組件。該項目誕生于微軟內部大規模文檔系統的開發實踐&#xff0c;旨在解決以下技術痛點&#xff1a; 大規模文檔處理性能&#xff1a;能夠高…

pyinstaller打包paddleocr發生錯誤解決

python環境是3.9&#xff0c;github paddleocr v2.10.0。 一個非常簡單的案例如下&#xff0c;打包時發生錯誤。 import requests from paddleocr import PaddleOCR if __name__ "__main__":paddleocr_ocr PaddleOCR(use_angle_clsTrue, langch,det_model_dirmode…

算法之回溯法

回溯法 回溯法定義與概念核心思想回溯法的一般框架偽代碼表示C語言實現框架 回溯法的優化技巧剪枝策略實現剪枝的C語言示例記憶化搜索 案例分析N皇后問題子集和問題全排列問題尋路問題 回溯法的可視化理解決策樹狀態空間樹回溯過程 回溯法與其他算法的比較回溯法與動態規劃的區…

命令行指引的嘗試

效果 步驟 首先初始化一個空的項目&#xff0c;然后安裝一些依賴 npm init -y npm install inquirer execa chalk ora至于這些依賴是干嘛的&#xff0c;如下圖所示&#xff1a; 然后再 package.json 中補充一個 bin 然后再根目錄下新建一個 index.js , 其中的內容如下 #!/…

探秘LLM推理模型:hidden states中藏著的self verification的“鑰匙”

推理模型在數學和邏輯推理等任務中表現出色&#xff0c;但常出現過度推理的情況。本文研究發現&#xff0c;推理模型的隱藏狀態編碼了答案正確性信息&#xff0c;利用這一信息可提升推理效率。想知道具體如何實現嗎&#xff1f;快來一起來了解吧&#xff01; 論文標題 Reasoni…

流量抓取工具(wireshark)

協議 TCP/IP協議簇 網絡接口層&#xff08;沒有特定的協議&#xff09;PPPOE 物理層數據鏈路層 網絡層: IP(v4/v6) ARP&#xff08;地址解析協議) RARP ICMP(Internet控制報文協議) IGMP傳輸層&#xff1a;TCP(傳輸控制協議&#xff09;UDP&#xff08;用戶數據報協議)應用層…

.NET倉儲層在 using 塊中創建 SqlSugarClient 的風險

如題&#xff0c;先看代碼示例 using 塊的使用 public ISugarQueryable<T> GetSet(Expression<Func<T, bool>> whereExpression null) {using (SqlSugarClient dbClient SqlSugarInstance.GetInstance()){var query dbClient.Queryable<T>();if (w…

C語言----函數棧幀講解

目錄 1.函數棧幀是什么? 2. 理解函數棧幀能解決什么問題 3、函數棧幀的創建和銷毀具體過程 3.1 什么是棧 3.2 認識相關寄存器和匯編指令 3.3函數棧幀的創建和銷毀 3.3.1 預備知識 3.3.2 函數的調用堆棧 3.3.3 準備環境 3.3.4 轉到反匯編 3.3.5 函數棧幀的創建 3.3…

代碼隨想錄學習筆記---二叉樹

學習目標&#xff1a; 學習代碼隨想錄–二叉樹 每天學習1道,復習兩道 學習內容&#xff1a; 2025.4.7 復習內容: 24. 兩兩交換鏈表中的節點 25. 最大二叉樹 學習內容 26. 合并二叉樹 2025.4.8 復習內容: 27. 二分查找 28. 合并二叉樹 29. 27. 移除元素 學習內容: 30. 二叉…

Git ——提交至github,Vercel拉取,更新不了項目的問題解決

首先因為github上有個錯誤 1 failing check Vercel - No GitHub account was found matching the commit author email address 發現好像是vercel拉取不了項目&#xff0c;vercel登錄的郵箱與我此次提交更改的郵箱不匹配&#xff0c;查看Git的user確實如此&#xff08;之前的…

Vue3項目中 npm 依賴安裝 --save 與 --save-dev 的區別解析

這兩個命令的區別如下&#xff1a; bash npm install --save types/crypto-js # 安裝到 dependencies&#xff08;生產依賴&#xff09; npm install --save-dev types/crypto-js # 安裝到 devDependencies&#xff08;開發依賴&#xff09; 核心區別 依賴分類不同…

品牌如何通過朝日新聞出海日本?——某企業日本媒體發稿實戰

文 | 言同數字亞太傳播實驗室 一、日本市場的隱形門檻&#xff1a;中國品牌的三大痛點 案例背景&#xff1a; 某中國靈芝保健品企業&#xff08;代號"ForestLife"&#xff09;&#xff0c;產品雖獲中國/歐盟有機認證&#xff0c;但在日本市場面臨&#xff1a; 認知…

鴻蒙-試一下屬性字符串:除了Span之外,如何在同一個Text組件中展示不同樣式的文字

文章目錄 前言簡介有哪些類型拉出來溜溜Text SpanStyledString其他CustomSpan先看一下構造函數onMeasure(measureInfo: CustomSpanMeasureInfo): CustomSpanMetricsonDraw(context: DrawContext, drawInfo: CustomSpanDrawInfo) 遺留問題 前言 在開發中&#xff0c;經常會遇到…

Nginx 安裝與配置全流程指南(2025 最新版)

一、環境準備與依賴安裝 1.1 系統要求 操作系統&#xff1a;支持主流 Linux 發行版&#xff08;Ubuntu 20.04/CentOS 7/Debian 10&#xff09;硬件配置&#xff1a;內存 ≥512MB&#xff0c;磁盤 ≥10GB 可用空間&#xff08;建議使用 SSD&#xff09;網絡要求&#xff1a;開…