我正在尝试将方法存储在变量的包中,因为它可能会更改,并且我不想在代码中的多个位置手动更新。
import hashlib as hashy
foo='hello world'
bar='hello world'
algo='md5'
hfoo=hashy.algo(foo.encode())
hbar=hashy.algo(bar.encode())
答案 0 :(得分:0)
在这种情况下,您可以使用hashlib.new()通过其名称创建哈希。
import hashlib # don't randomly rename standard libraries
ALGORITHM = 'md5'
h = hashlib.new(ALGORITHM)
h.update('hello world'.encode('utf-8'))
print(h.hexdigest())
如果您认为可能要更改正在调用的模块中的哪个函数,则可以将其包装在自己的函数中,这是对所问问题的正确通用答案。
import hashlib
def hash(s):
hashlib.md5(s.encode('utf-8'))
print hash('hello world')
您可以在模块上使用getattr()来按名称检索函数,但这不是通常的处理方式。