第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何將 f-string 與變量一起使用,而不是與字符串文字一起使用?

如何將 f-string 與變量一起使用,而不是與字符串文字一起使用?

達(dá)令說(shuō) 2021-10-19 16:58:13
我想將 f-string 與我的字符串變量一起使用,而不是使用字符串文字定義的字符串,"...".這是我的代碼:name=["deep","mahesh","nirbhay"]user_input = r"certi_{element}" # this string I ask from user  for element in name:    print(f"{user_input}")此代碼提供輸出:certi_{element}certi_{element}certi_{element}但我想要:certi_{deep}certi_{mahesh}certi_{nirbhay}我怎樣才能做到這一點(diǎn)?
查看完整描述

3 回答

?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊

f"..."將表達(dá)式結(jié)果插入到文字中時(shí),字符串非常有用,但是您沒(méi)有文字,而是在單獨(dú)的變量中有一個(gè)模板字符串。


您可以使用str.format()將值應(yīng)用于該模板:


name=["deep","mahesh","nirbhay"]

user_input = "certi_{element}" # this string i ask from user  


for value in name:

    print(user_input.format(element=value))

使用名稱(chēng)(例如{element})的字符串格式化占位符不是變量。您可以為str.format()調(diào)用的關(guān)鍵字參數(shù)中的每個(gè)名稱(chēng)分配一個(gè)值。在上面的示例中,element=value傳入value變量的值以使用element.


與f-strings不同,{...}占位符不是表達(dá)式,您不能在模板中使用任意 Python 表達(dá)式。這是一件好事,您不希望最終用戶(hù)能夠在您的程序中執(zhí)行任意 Python 代碼。有關(guān)詳細(xì)信息,請(qǐng)參閱格式字符串語(yǔ)法文檔。


您可以傳入任意數(shù)量的名稱(chēng);字符串模板不具有使用其中任何一個(gè)。如果你把str.format()與**mapping調(diào)用約定,你可以使用任何字典作為價(jià)值的源泉:


template_values = {

    'name': 'Ford Prefect',

    'number': 42,

    'company': 'Sirius Cybernetics Corporation',

    'element': 'Improbability Drive',

}


print(user_input.format(**template_values)

以上將允許用戶(hù)使用template_values他們模板中的任何名稱(chēng),他們喜歡的次數(shù)不限。


雖然您可以使用locals()和globals()生成將變量名稱(chēng)映射到值的字典,但我不推薦這種方法。使用像上面這樣的專(zhuān)用命名空間來(lái)限制可用的名稱(chēng),并為您的最終用戶(hù)記錄這些名稱(chēng)。


查看完整回答
反對(duì) 回復(fù) 2021-10-19
?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊

如果你定義:


def fstr(template):

    return eval(f"f'{template}'")

然后你可以這樣做:


name=["deep","mahesh","nirbhay"]

user_input = r"certi_{element}" # this string i ask from user  


for element in name:

    print(fstr(user_input))

作為輸出給出:


certi_deep

certi_mahesh

certi_nirbhay

但請(qǐng)注意,用戶(hù)可以在模板中使用表達(dá)式,例如:


import os  # assume you have used os somewhere

user_input = r"certi_{os.environ}"


for element in name:

    print(fstr(user_input))

你絕對(duì)不想要這個(gè)!


因此,更安全的選擇是定義:


def fstr(template, **kwargs):

    return eval(f"f'{template}'", kwargs)

任意代碼不再可能,但用戶(hù)仍然可以使用字符串表達(dá)式,例如:


user_input = r"certi_{element.upper()*2}"


for element in name:

    print(fstr(user_input, element=element))

作為輸出給出:


certi_DEEPDEEP

certi_MAHESHMAHESH

certi_NIRBHAYNIRBHAY

在某些情況下這可能是需要的。


查看完整回答
反對(duì) 回復(fù) 2021-10-19
?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果您希望用戶(hù)能夠訪(fǎng)問(wèn)您的命名空間,您可以這樣做,但后果完全由您承擔(dān)。除了使用 f-strings,您還可以使用該format方法以非常相似的語(yǔ)法進(jìn)行動(dòng)態(tài)插值。


如果您希望用戶(hù)只能訪(fǎng)問(wèn)少數(shù)特定變量,您可以執(zhí)行以下操作


name=["deep", "mahesh", "nirbhay"]

user_input = "certi_{element}" # this string i ask from user  


for element in name:

    my_str = user_input.format(element=element)

    print(f"{my_str}")

您當(dāng)然可以重命名用戶(hù)輸入的鍵與您使用的變量名稱(chēng):


my_str = user_input.format(element=some_other_variable)

你可以讓用戶(hù)訪(fǎng)問(wèn)你的整個(gè)命名空間(或至少大部分)。請(qǐng)不要這樣做,但請(qǐng)注意,您可以:


my_str = user_input.format(**locals(), **globals())

我使用print(f'{my_str}')而不是的原因print(my_str)是為了避免文字大括號(hào)被視為進(jìn)一步的錯(cuò)誤擴(kuò)展的情況。例如,user_input = 'certi_{{{element}}}'


查看完整回答
反對(duì) 回復(fù) 2021-10-19
  • 3 回答
  • 0 關(guān)注
  • 245 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)