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

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

基于字符串的Python類型轉(zhuǎn)換

基于字符串的Python類型轉(zhuǎn)換

Qyouu 2021-10-05 15:59:05
我如何編寫此代碼才能使其適用于給定的每種類型?def set_val_type(val, val_type):    if val_type == 'bool':        return bool(val)    elif val_type == 'int':        return int(val)
查看完整描述

3 回答

?
料青山看我應(yīng)如是

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

您可以執(zhí)行以下操作:

def set_val_type(val, val_type):
    return eval(val_type + '({})'.format(val))

盡管這似乎是您正在尋找的內(nèi)容,但不建議使用 eval。正如@pault 之前評(píng)論的那樣,這似乎是一個(gè) XY 問題


查看完整回答
反對(duì) 回復(fù) 2021-10-05
?
泛舟湖上清波郎朗

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

您可以創(chuàng)建需要處理的所有類型的字典。


def set_val_type(val, val_type):

    funcs = {'int': int, 'bool': bool}

    return funcs[val_type](val)


查看完整回答
反對(duì) 回復(fù) 2021-10-05
?
翻翻過去那場(chǎng)雪

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

為了避免使用eval,并假設(shè)您只使用內(nèi)置類型,您可以getattr()在內(nèi)置模塊上使用 a (如果您想確保不調(diào)用任何函數(shù),您可以執(zhí)行 an isinstance(user_provided_type_here, type)before。


要允許全局范圍內(nèi)的任何類型,請(qǐng)使用 globals()[user_provided_type_name]


完整示例:


import builtins


def set_val_type(val, val_type);

    user_type = getattr(builtins, val_type)  # possibly replace with globals()[val_type]

    if not isinstance(user_type, type):

        raise TypeError(f'{user_type} is no a type.')

    return user_type(val)

為什么不使用eval()(使用不受信任的用戶輸入):


def set_val_type(val, val_type):

    return eval(val_type + '({})'.format(val))


evil_val_type = 'bool'

evil_val = 'exec("import os\\nos.chdir(os.path.sep)\\nprint(os.getcwd())")'


print(set_val_type(evil_val, evil_val_name))

'False'  # yes, this actually works error-free

有了這種訪問級(jí)別,一個(gè)來自非常壞消息的subprocess.Popen/ 。 也就是說,如果您的用戶輸入是可信的,則使用是os.system

eval()不是 問題較少。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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