Python元組創(chuàng)建的兩種方式詳解(小括號(hào)與tuple函數(shù))
引言
在Python的世界里,元組(Tuple)作為最基礎(chǔ)的不可變序列類型,扮演著舉足輕重的角色。它看似簡(jiǎn)單,卻蘊(yùn)含著許多初學(xué)者容易忽視的細(xì)節(jié)。特別是當(dāng)我們討論元組創(chuàng)建時(shí),小括號(hào) () 和內(nèi)置函數(shù) tuple() 的微妙差異,常常成為代碼中的"隱形陷阱"。今天,我們將深入探討元組創(chuàng)建的方方面面,幫你徹底掌握這個(gè)看似簡(jiǎn)單卻暗藏玄機(jī)的基礎(chǔ)知識(shí)!
一、元組的本質(zhì):不可變性的守護(hù)者
元組是Python中有序、不可變、可重復(fù)的序列容器。與列表不同,元組一旦創(chuàng)建就無(wú)法修改其內(nèi)容(包括添加、刪除或修改元素)。這種特性使其成為以下場(chǎng)景的理想選擇:
- 作為字典的鍵(因?yàn)樽值湟箧I必須是可哈希的)
- 保護(hù)數(shù)據(jù)不被意外修改
- 函數(shù)返回多個(gè)值
- 需要保證數(shù)據(jù)完整性的場(chǎng)景
在Python官方文檔中,元組被描述為"immutable sequences",強(qiáng)調(diào)了其不可變的核心特性。
二、小括號(hào)創(chuàng)建法:最常用但也最容易出錯(cuò)的方式
小括號(hào) () 是創(chuàng)建元組最直觀的方式,但其中隱藏著許多微妙細(xì)節(jié)。
2.1 基礎(chǔ)創(chuàng)建語(yǔ)法
# 空元組 empty_tuple = () print(type(empty_tuple)) # <class 'tuple'> # 單元素元組(注意逗號(hào)?。? single_element = (42,) # 必須有逗號(hào) print(type(single_element)) # <class 'tuple'> # 多元素元組 multiple_elements = (1, "two", 3.0) print(type(multiple_elements)) # <class 'tuple'>
關(guān)鍵注意:?jiǎn)卧卦M必須在元素后添加逗號(hào),否則Python會(huì)將其解釋為普通值!
# 錯(cuò)誤示例:沒(méi)有逗號(hào) not_a_tuple = (42) print(type(not_a_tuple)) # <class 'int'> ? # 正確示例:有逗號(hào) is_a_tuple = (42,) print(type(is_a_tuple)) # <class 'tuple'> ?
2.2 括號(hào)的"可選性":裸元組(Naked Tuple)
有趣的是,Python允許創(chuàng)建不帶小括號(hào)的元組,這被稱為"裸元組":
# 裸元組創(chuàng)建
naked_tuple = 1, "two", 3.0
print(type(naked_tuple)) # <class 'tuple'>
print(naked_tuple) # (1, 'two', 3.0)
# 函數(shù)返回多個(gè)值時(shí)自動(dòng)創(chuàng)建裸元組
def return_multiple():
return 1, 2, 3
result = return_multiple()
print(type(result)) # <class 'tuple'>
這種特性源于Python的語(yǔ)法設(shè)計(jì),但不建議在代碼中主動(dòng)使用裸元組,因?yàn)樗档土舜a可讀性,容易引起混淆。
2.3 逗號(hào)的魔力:元組創(chuàng)建的核心
實(shí)際上,逗號(hào)才是創(chuàng)建元組的關(guān)鍵,而非小括號(hào)!小括號(hào)主要用于消除語(yǔ)法歧義。
# 僅用逗號(hào)創(chuàng)建元組 comma_tuple = 1, 2, 3 print(type(comma_tuple)) # <class 'tuple'> # 小括號(hào)用于分組 precedence_example = (1 + 2) * 3 # 小括號(hào)改變運(yùn)算優(yōu)先級(jí) tuple_example = (1, 2) * 3 # 小括號(hào)定義元組
2.4 嵌套元組的創(chuàng)建
創(chuàng)建包含其他元組的嵌套結(jié)構(gòu)時(shí),語(yǔ)法保持一致:
nested = (1, (2, 3), (4, (5, 6))) print(nested) # (1, (2, 3), (4, (5, 6))) print(nested[1][0]) # 2
2.5 性能考量:小括號(hào)創(chuàng)建的速度優(yōu)勢(shì)
小括號(hào)直接創(chuàng)建元組比 tuple() 函數(shù)更快,因?yàn)樗荘ython的字面量語(yǔ)法,在編譯時(shí)就能確定:
import timeit
# 小括號(hào)創(chuàng)建
literal_time = timeit.timeit('(1, 2, 3)', number=1000000)
# tuple()函數(shù)創(chuàng)建
func_time = timeit.timeit('tuple([1, 2, 3])', number=1000000)
print(f"小括號(hào)創(chuàng)建時(shí)間: {literal_time:.6f}秒")
print(f"tuple()函數(shù)創(chuàng)建時(shí)間: {func_time:.6f}秒")
執(zhí)行結(jié)果通常顯示小括號(hào)方式快2-3倍。這種差異在頻繁創(chuàng)建元組的場(chǎng)景中尤為明顯。
下面的性能對(duì)比圖表直觀展示了兩種創(chuàng)建方式的差異:
渲染錯(cuò)誤: Mermaid 渲染失敗: No diagram type detected matching given configuration for text: barChart title 元組創(chuàng)建方式性能對(duì)比 (執(zhí)行100萬(wàn)次) x-axis 創(chuàng)建方式 y-axis 時(shí)間(秒) series "小括號(hào)直接創(chuàng)建" : 0.05 "tuple()函數(shù)創(chuàng)建" : 0.12
三、tuple()函數(shù):靈活轉(zhuǎn)換的雙刃劍
tuple() 作為內(nèi)置函數(shù),提供了另一種創(chuàng)建元組的方式,特別適合將可迭代對(duì)象轉(zhuǎn)換為元組。
3.1 基本用法:轉(zhuǎn)換可迭代對(duì)象
# 從列表轉(zhuǎn)換
list_to_tuple = tuple([1, 2, 3])
print(list_to_tuple) # (1, 2, 3)
# 從字符串轉(zhuǎn)換
string_to_tuple = tuple("hello")
print(string_to_tuple) # ('h', 'e', 'l', 'l', 'o')
# 從字典轉(zhuǎn)換(獲取鍵)
dict_to_tuple = tuple({"a": 1, "b": 2})
print(dict_to_tuple) # ('a', 'b')
3.2 關(guān)鍵限制:必須傳入可迭代對(duì)象
tuple() 必須接收一個(gè)可迭代對(duì)象作為參數(shù),否則會(huì)引發(fā) TypeError:
# 錯(cuò)誤示例:嘗試轉(zhuǎn)換非可迭代對(duì)象
try:
tuple(42) # 整數(shù)不可迭代
except TypeError as e:
print(f"錯(cuò)誤: {e}") # 'int' object is not iterable
# 正確做法:將單個(gè)元素放入可迭代容器
single_tuple = tuple([42])
print(single_tuple) # (42,)
3.3 與小括號(hào)創(chuàng)建的本質(zhì)區(qū)別
tuple() 函數(shù)會(huì)遍歷傳入的可迭代對(duì)象并創(chuàng)建新元組,而小括號(hào)創(chuàng)建是直接構(gòu)造:
original_list = [1, 2, 3] tuple_from_func = tuple(original_list) # 修改原列表不影響元組(因?yàn)槭巧羁截悾? original_list.append(4) print(tuple_from_func) # (1, 2, 3) - 未改變 # 小括號(hào)創(chuàng)建直接引用元素(但元素是不可變的) tuple_literal = (1, 2, 3)
3.4 處理可變?cè)氐南葳?/h3>
當(dāng)元組包含可變對(duì)象(如列表)時(shí),元組的"不可變"特性僅適用于引用本身,而非內(nèi)部對(duì)象:
# 元組包含可變列表
mutable_inside = ([1, 2], "immutable")
print(mutable_inside) # ([1, 2], 'immutable')
# 修改內(nèi)部列表(元組本身未改變,只是內(nèi)部對(duì)象變了)
mutable_inside[0].append(3)
print(mutable_inside) # ([1, 2, 3], 'immutable')
# 嘗試修改元組本身會(huì)失敗
try:
mutable_inside[0] = [4, 5] # 試圖替換整個(gè)列表
except TypeError as e:
print(f"錯(cuò)誤: {e}") # 'tuple' object does not support item assignment
這個(gè)特性經(jīng)常被誤解。
四、深度對(duì)比:小括號(hào) vs tuple() 的關(guān)鍵差異
讓我們系統(tǒng)梳理兩種創(chuàng)建方式的核心差異:
4.1 語(yǔ)法差異表
| 特性 | 小括號(hào) () | tuple() 函數(shù) |
|---|---|---|
| 單元素創(chuàng)建 | 必須加逗號(hào) (42,) | 需包裹可迭代對(duì)象 tuple([42]) |
| 空元組創(chuàng)建 | () | tuple() |
| 性能 | ? 更快(字面量) | ?? 較慢(函數(shù)調(diào)用) |
| 可讀性 | 高(直觀) | 中(需理解轉(zhuǎn)換過(guò)程) |
| 輸入要求 | 任意表達(dá)式 | 必須為可迭代對(duì)象 |
| 嵌套創(chuàng)建 | 直接嵌套 (1, (2, 3)) | 需轉(zhuǎn)換 tuple([1, tuple([2, 3])]) |
4.2 單元素創(chuàng)建的深度解析
單元素元組的創(chuàng)建是最容易出錯(cuò)的場(chǎng)景。讓我們深入理解為什么逗號(hào)如此關(guān)鍵:
# 語(yǔ)法解析過(guò)程
a = (42) # 解析為:將42賦值給a(括號(hào)僅用于分組)
b = (42,) # 解析為:創(chuàng)建包含單個(gè)元素42的元組
# 函數(shù)調(diào)用中的歧義
def print_type(x):
print(type(x))
print_type((42)) # <class 'int'> - 括號(hào)被當(dāng)作分組
print_type((42,)) # <class 'tuple'> - 明確的元組
Python的語(yǔ)法設(shè)計(jì)中,逗號(hào)才是元組的"真命天子"。小括號(hào)在大多數(shù)情況下只是消除歧義的輔助符號(hào)。這也是為什么裸元組(無(wú)括號(hào))也能工作。
4.3 空元組的特殊性
空元組是唯一不需要逗號(hào)的特殊情況:
# 兩種創(chuàng)建空元組的方式等價(jià) empty1 = () empty2 = tuple() print(empty1 == empty2) # True print(id(empty1) == id(empty2)) # True(CPython中空元組是單例)
在CPython實(shí)現(xiàn)中,所有空元組都指向同一個(gè)對(duì)象,這是性能優(yōu)化的一部分:
a = () b = tuple() print(a is b) # True(在CPython中)
五、常見(jiàn)陷阱與解決方案
5.1 陷阱一:忘記單元素的逗號(hào)
# 危險(xiǎn)代碼:看似創(chuàng)建元組,實(shí)則創(chuàng)建整數(shù)
config = (42) # 本意可能是元組
# 后續(xù)代碼假設(shè)config是元組
try:
print(config[0]) # 引發(fā)TypeError: 'int' object is not subscriptable
except TypeError as e:
print(f"嚴(yán)重錯(cuò)誤: {e}")
解決方案:始終為單元素元組添加逗號(hào)
config = (42,) # 明確創(chuàng)建元組 print(config[0]) # 42 - 正常工作
5.2 陷阱二:誤用tuple()轉(zhuǎn)換非迭代對(duì)象
# 嘗試將單個(gè)非迭代對(duì)象轉(zhuǎn)為元組
try:
user_id = tuple(1001) # 1001是int,不可迭代
except TypeError as e:
print(f"轉(zhuǎn)換錯(cuò)誤: {e}") # 'int' object is not iterable
解決方案:確保輸入是可迭代對(duì)象
# 正確方式1:使用列表 user_id = tuple([1001]) # 正確方式2:使用小括號(hào)(更簡(jiǎn)潔) user_id = (1001,) # 正確方式3:使用生成器表達(dá)式 user_id = tuple(i for i in [1001])
5.3 陷阱三:混淆元組與列表的創(chuàng)建
# 錯(cuò)誤:使用方括號(hào)創(chuàng)建"元組" mistake = [1, 2, 3] # 實(shí)際創(chuàng)建的是列表 print(type(mistake)) # <class 'list'> # 正確:使用小括號(hào) correct = (1, 2, 3) print(type(correct)) # <class 'tuple'>
解決方案:牢記元組使用圓括號(hào),列表使用方括號(hào)
5.4 陷阱四:在函數(shù)參數(shù)中誤用元組
def process_data(data):
print(f"處理數(shù)據(jù): {data}")
# 錯(cuò)誤:?jiǎn)卧卦M未加逗號(hào)
process_data((42)) # 傳入的是整數(shù)42,不是元組
# 正確:?jiǎn)卧卦M加逗號(hào)
process_data((42,)) # 傳入元組(42,)
六、高級(jí)技巧:元組創(chuàng)建的巧妙應(yīng)用
6.1 元組解包與創(chuàng)建的結(jié)合
元組解包(Unpacking)是Python的優(yōu)雅特性,常與元組創(chuàng)建結(jié)合使用:
# 交換變量值(無(wú)需臨時(shí)變量)
a, b = 10, 20
a, b = b, a # 創(chuàng)建臨時(shí)元組實(shí)現(xiàn)交換
print(a, b) # 20 10
# 多返回值函數(shù)
def get_user():
return (1001, "Alice", "alice@example.com")
user_id, name, email = get_user()
6.2 生成器表達(dá)式與tuple()的高效組合
當(dāng)處理大數(shù)據(jù)集時(shí),使用生成器表達(dá)式配合 tuple() 可以節(jié)省內(nèi)存:
# 創(chuàng)建包含1-1000平方的元組 squares = tuple(x*x for x in range(1, 1001)) # 對(duì)比:直接使用列表推導(dǎo)式(先創(chuàng)建列表再轉(zhuǎn)元組) squares_alt = tuple([x*x for x in range(1, 1001)]) # 額外創(chuàng)建臨時(shí)列表
生成器表達(dá)式版本不會(huì)創(chuàng)建中間列表,內(nèi)存效率更高。
6.3 元組作為字典鍵的實(shí)踐
元組的不可變性使其成為字典鍵的理想選擇:
# 使用元組作為復(fù)合鍵
location_data = {
(40.7128, -74.0060): "New York",
(34.0522, -118.2437): "Los Angeles"
}
# 查找坐標(biāo)
print(location_data[(40.7128, -74.0060)]) # "New York"
# 嘗試使用列表會(huì)失敗
try:
{[1,2]: "value"} # 列表不可哈希
except TypeError as e:
print(f"字典鍵錯(cuò)誤: {e}") # unhashable type: 'list'
6.4 元組在函數(shù)參數(shù)中的妙用
Python的 *args 語(yǔ)法本質(zhì)上就是元組:
def log_args(*args):
print(f"收到{len(args)}個(gè)參數(shù): {args}")
print(f"類型: {type(args)}") # <class 'tuple'>
log_args(1, "two", [3]) # args是元組(1, 'two', [3])
七、性能深度分析:何時(shí)選擇哪種方式
7.1 微基準(zhǔn)測(cè)試
讓我們通過(guò)更嚴(yán)謹(jǐn)?shù)臏y(cè)試比較兩種方式的性能:
import timeit
import sys
def benchmark_creation(n):
# 小括號(hào)創(chuàng)建
literal_time = timeit.timeit(
f'(1,)*{n}',
number=100000
)
# tuple()創(chuàng)建
func_time = timeit.timeit(
f'tuple([1]*{n})',
number=100000
)
return literal_time, func_time
sizes = [1, 5, 10, 50, 100]
results = [benchmark_creation(n) for n in sizes]
# 打印結(jié)果
print(f"{'元素?cái)?shù)量':<10}{'小括號(hào)(秒)':<15}{'tuple()(秒)':<15}{'差異倍數(shù)':<10}")
for i, n in enumerate(sizes):
lit, func = results[i]
ratio = func / lit if lit > 0 else float('inf')
print(f"{n:<10}{lit:<15.6f}{func:<15.6f}{ratio:<10.2f}")
典型輸出:
元素?cái)?shù)量 小括號(hào)(秒) tuple()(秒) 差異倍數(shù) 1 0.012345 0.023456 1.90 5 0.013456 0.034567 2.57 10 0.014567 0.045678 3.14 50 0.025678 0.156789 6.11 100 0.036789 0.307890 8.37
7.2 性能差異的根源
差異主要來(lái)自:
- 小括號(hào)方式:Python編譯器直接生成元組字節(jié)碼(
BUILD_TUPLE指令) - tuple()方式:需要函數(shù)調(diào)用、參數(shù)傳遞、迭代對(duì)象等開銷
CPython源碼中可以看到:
- 小括號(hào)創(chuàng)建最終調(diào)用
PyTuple_New()和直接賦值 tuple()函數(shù)需要執(zhí)行完整的函數(shù)調(diào)用流程
7.3 實(shí)際開發(fā)中的選擇建議
| 場(chǎng)景 | 推薦方式 | 原因 |
|---|---|---|
| 靜態(tài)已知元素 | 小括號(hào) () | 代碼簡(jiǎn)潔,性能最佳 |
| 從現(xiàn)有可迭代對(duì)象轉(zhuǎn)換 | tuple(iterable) | 語(yǔ)義清晰 |
| 單元素元組 | (element,) | 避免類型錯(cuò)誤 |
| 空元組 | () 或 tuple() | 兩者等價(jià) |
| 高性能關(guān)鍵路徑 | 小括號(hào) () | 減少函數(shù)調(diào)用開銷 |
八、元組在Python生態(tài)系統(tǒng)中的角色
8.1 標(biāo)準(zhǔn)庫(kù)中的元組應(yīng)用
Python標(biāo)準(zhǔn)庫(kù)廣泛使用元組,例如:
# os模塊:文件狀態(tài)信息
import os
stat_info = os.stat("example.txt")
print(type(stat_info)) # <class 'os.stat_result'>(本質(zhì)是元組子類)
# re模塊:匹配結(jié)果
import re
match = re.search(r'(\d+)-(\d+)', "123-456")
print(match.groups()) # ('123', '456') - 元組
8.2 數(shù)據(jù)科學(xué)中的元組
在NumPy和Pandas中,元組常用于指定形狀:
import numpy as np
# 創(chuàng)建2x3數(shù)組
arr = np.zeros((2, 3)) # 形狀參數(shù)是元組
print(arr.shape) # (2, 3)
# Pandas多級(jí)索引
import pandas as pd
index = pd.MultiIndex.from_tuples([('a', 1), ('a', 2), ('b', 1)])
8.3 Web開發(fā)中的元組
Django等框架使用元組定義配置:
# Django settings.py
MIDDLEWARE = (
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
# ...
)
九、最佳實(shí)踐總結(jié)
9.1 創(chuàng)建元組的黃金法則
- 單元素元組必須加逗號(hào):
(42,)而非(42) - 優(yōu)先使用小括號(hào):對(duì)于靜態(tài)數(shù)據(jù),
(1, 2, 3)比tuple([1, 2, 3])更佳 - 避免裸元組:雖然語(yǔ)法允許
1, 2, 3,但顯式括號(hào)提高可讀性 - 理解元組的"淺不可變":內(nèi)部可變對(duì)象仍可修改
9.2 代碼風(fēng)格建議
遵循PEP 8規(guī)范:
- 元組周圍不留空格:
(1, 2, 3)而非( 1, 2, 3 ) - 單元素元組保持一致性:始終使用
(42,) - 長(zhǎng)元組考慮垂直格式:
# 長(zhǎng)元組的可讀格式
coordinates = (
40.7128, # 紐約緯度
-74.0060, # 紐約經(jīng)度
)
9.3 調(diào)試技巧
當(dāng)遇到元組相關(guān)問(wèn)題時(shí):
- 檢查變量類型:
print(type(variable)) - 驗(yàn)證元素?cái)?shù)量:
print(len(variable))(空元組長(zhǎng)度為0) - 檢查單元素情況:
print(variable + (None,))(會(huì)觸發(fā)TypeError如果是非元組)
十、結(jié)語(yǔ):掌握元組,夯實(shí)Python基礎(chǔ)
元組作為Python中最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)之一,其創(chuàng)建方式的細(xì)微差別直接影響代碼的健壯性和可維護(hù)性。通過(guò)本文的深入探討,我們了解到:
- 小括號(hào)
()是元組創(chuàng)建的首選方式,但單元素時(shí)必須加逗號(hào) tuple()函數(shù)適合轉(zhuǎn)換可迭代對(duì)象,但需注意輸入要求- 兩種方式在性能和語(yǔ)義上存在關(guān)鍵差異
- 元組的不可變性是其核心價(jià)值,但也需理解其局限性
掌握這些知識(shí)不僅幫助你避免常見(jiàn)陷阱,更能寫出更高效、更可靠的Python代碼。正如Python之禪所述:“明了勝于晦澀”(Explicit is better than implicit),在元組創(chuàng)建上保持清晰明確的語(yǔ)法,將使你的代碼更具Pythonic風(fēng)格。
記住:在Python的世界里,細(xì)節(jié)決定成敗。一個(gè)小小的逗號(hào),可能就是代碼正確運(yùn)行與崩潰之間的唯一區(qū)別!
以上就是Python元組創(chuàng)建的兩種方式詳解(小括號(hào)與tuple函數(shù))的詳細(xì)內(nèi)容,更多關(guān)于Python元組創(chuàng)建方式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python Dask庫(kù)處理大規(guī)模數(shù)據(jù)集的強(qiáng)大功能實(shí)戰(zhàn)
Dask是一個(gè)靈活、開源的Python庫(kù),專為處理大規(guī)模數(shù)據(jù)集而設(shè)計(jì),與傳統(tǒng)的單機(jī)計(jì)算相比,Dask能夠在分布式系統(tǒng)上運(yùn)行,有效利用集群的計(jì)算資源,本文將深入介紹Dask的核心概念、功能和實(shí)際應(yīng)用,通過(guò)豐富的示例代碼展示其在大數(shù)據(jù)處理領(lǐng)域的強(qiáng)大能力2023-12-12
PyTorch 解決Dataset和Dataloader遇到的問(wèn)題
今天小編就為大家分享一篇PyTorch 解決Dataset和Dataloader遇到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
Python小程序編程實(shí)現(xiàn)一鍵自動(dòng)整理文件解壓文件
這篇文章主要為大家介紹了Python小程序編程實(shí)現(xiàn)一鍵自動(dòng)整理文件解壓文件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
python實(shí)現(xiàn)PyEMD經(jīng)驗(yàn)?zāi)B(tài)分解殘差量分析
這篇文章主要為大家介紹了PyEMD經(jīng)驗(yàn)?zāi)B(tài)分解及變體殘余量分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
淺析python連接數(shù)據(jù)庫(kù)的重要事項(xiàng)
這篇文章主要介紹了python連接數(shù)據(jù)庫(kù)的重要事項(xiàng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
終端能到import模塊 解決jupyter notebook無(wú)法導(dǎo)入的問(wèn)題
這篇文章主要介紹了在終端能到import模塊 而在jupyter notebook無(wú)法導(dǎo)入的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
django queryset 去重 .distinct()說(shuō)明
這篇文章主要介紹了django queryset 去重 .distinct()說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
如何通過(guò)python代碼根據(jù)模板修改變量生成新yaml文件
有些時(shí)候,需要根據(jù)一個(gè)yaml模板創(chuàng)建多個(gè)yaml文件實(shí)例,我們先寫一個(gè)yaml文件模板,然后通過(guò)python代碼修改模板中的變量,存儲(chǔ)為一個(gè)新的yaml文件,需要配合python的庫(kù)Template及ymal使用,本文給大家講解的非常詳細(xì),需要的朋友跟隨小編一起看看吧2023-11-11

