【发布时间】:2019-08-27 20:03:25
【问题描述】:
我有一个变量 c,其中包含从 tkinters 条目对象获得的字符串。 我想对这个字符串应用一个哈希函数,然后将它传输到其他计算机。
我已经尝试使用 bytes 函数对我的字符串进行编码。
bytes(c)
或encode函数
否则我尝试使用“密码学”库并得到同样的错误。
我使用了 hashlib 库并创建了一个包含 #hashlib.sha256() 的变量“digest”。
digest = hashlib.sha256()
比我应用了文档中所说的更新功能。
c = digest.update(c)
c = c.digest()
我有一个错误
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1547, in __call__
return self.func(*args)
File "C:\Users\HTTPS\Desktop\registration_form.py", line 79, in register
c = c.digest()
AttributeError: 'NoneType' object has no attribute 'digest'
【问题讨论】:
-
digest.update(c)不返回任何内容;它被称为它的副作用,而不是它的返回值。返回None是它发出信号的方式。 -
之后我调用了一个“digest”函数。
-
是的,但是因为您运行了
c = digest.update(c)并且digest.update()返回 None,所以您随后在None对象上调用了 digest() 函数。这就是错误消息告诉您NoneType对象没有digest的原因——您不再有hashlib.sha256对象,而是有None对象,因为您用@987654335 覆盖了您的sha256 对象update()调用返回的 @ 对象。