Skip to main content
 首页 » 编程设计

python之如何在我的函数中替换 `eval`

2025年05月04日10pander-it

我很清楚在 Python 中使用 eval 不是好的做法。这是我的代码:

from hashlib import * # added for clarification 
def get_hash(self): 
        if self.hash_type in ['md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512']: 
            data = eval(self.hash_type) # <--- how can I replace this? 

我听说过setattr函数,但老实说我不知道​​如何实现它。

是否也可以使用 map 函数来做到这一点?

请注意,'md5'、'sha1'、'sha224' 等是局部变量。当我对其中之一使用 eval 函数时,它们就变成了函数。

请您参考如下方法:

您可以使用getattr:

import hashlib 
if self.hash_type in ['md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512']: 
     func = getattr(hashlib, self.hash_type)