[英]No return value from function in Python 3? Why do I have to do a = int(a, 16) in Python instead of just int(a)
假设我有以下在Python 3中调用的函数
def receive(dat, rowIndex, message, bytes):
bytes = binascii.hexlify(bytes)
print(bytes)
为什么我必须把bytes = binascii.hexlify(bytes)
而不是:
def receive(dat, rowIndex, message, bytes):
binascii.hexlify(bytes)
print(bytes)
这会hexlify
bytes
变量。 如果该函数未返回任何内容, bytes
的值是否不会更改?
bytes
类型是不可变的,您不能更改该值。 binascii.hexlify()
是一个接收字节并返回字符串的函数。 它不能修改字节。 该函数返回了一些信息,只是您对返回值不做任何事情。 hexlify()
返回二进制数据的十六进制表示形式。数据的每个字节均转换为相应的2位数十六进制表示形式。因此,所得的字符串是数据长度的两倍。”
当你写
x = binascii.hexlify(b)
然后binascii.hexlify()
返回存储在x
的字符串。
当你写
binascii.hexlify(b)
则返回完全相同的字符串,但由于您没有将其存储在任何地方而被丢弃。
另外, bytes
是内置类型。 将内置函数的名称,类型等用作变量名称被认为是不好的样式,因为这样很快就会造成混乱。 如果以后需要在函数中使用内置的bytes()
怎么办?
从文档 :
binascii.hexlify(data)返回二进制数据的十六进制表示形式。 数据的每个字节都转换为相应的2位十六进制表示形式。 因此,结果字符串的长度是数据长度的两倍。
因此hexlify
不会更改接收到的bytes
对象,而是返回一个字符串。 那就是为什么您需要bytes =
部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.