繁体   English   中英

Python 3中的函数没有返回值吗? 为什么我必须在Python中执行a = int(a,16),而不仅仅是int(a)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM