试图使用变量调用包方法

时间:2018-08-17 08:25:10

标签: python

我正在尝试将方法存储在变量的包中,因为它可能会更改,并且我不想在代码中的多个位置手动更新。

import hashlib as hashy

foo='hello world'
bar='hello world'

algo='md5'
hfoo=hashy.algo(foo.encode())
hbar=hashy.algo(bar.encode())

1 个答案:

答案 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()来按名称检索函数,但这不是通常的处理方式。