Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是确保Python3.x不';在索引列表时,是否隐式地将字节转换为其他类?_Python_Python 3.x - Fatal编程技术网

什么是确保Python3.x不';在索引列表时,是否隐式地将字节转换为其他类?

什么是确保Python3.x不';在索引列表时,是否隐式地将字节转换为其他类?,python,python-3.x,Python,Python 3.x,在编写一组Python脚本来解析来自Decawave DWM1001模块的TLV数据时,我遇到了一种情况,即当我从字节列表中请求一个或多个元素时,函数的返回类型会发生变化。我认为问题在于,我使用的语法允许Python自动将字节数据转换为它认为对我更有用的类型。这会导致调用函数在尝试从字节转换为int或string等时中断,调用函数希望数据以字节的形式出现 我一直在使用条件语句逐案地对其进行黑客攻击,但它开始使我的代码变得不必要地难以阅读。我真的宁愿纠正我糟糕的语法理解 以下是简化的示例: >

在编写一组Python脚本来解析来自Decawave DWM1001模块的TLV数据时,我遇到了一种情况,即当我从字节列表中请求一个或多个元素时,函数的返回类型会发生变化。我认为问题在于,我使用的语法允许Python自动将字节数据转换为它认为对我更有用的类型。这会导致调用函数在尝试从字节转换为int或string等时中断,调用函数希望数据以字节的形式出现

我一直在使用条件语句逐案地对其进行黑客攻击,但它开始使我的代码变得不必要地难以阅读。我真的宁愿纠正我糟糕的语法理解

以下是简化的示例:

>>> buffer = bytes([1,2,3,4])
>>> buffer[0:1]
'\x01'
>>> type(_)
<class 'bytes' >
>>> buffer[0]  # Expected identical output as above
1
>>> type(_)
<class 'int'>
>>缓冲区=字节([1,2,3,4])
>>>缓冲区[0:1]
“\x01”
>>>类型
>>>缓冲区[0]#预期输出与上述相同
1.
>>>类型
为什么输出不相同?我知道,在尝试将返回值从字节转换为其他值之前,我可以使用isinstance()检查返回值是否为字节,但我看到了一些建议,我同意这会在代码中造成脆弱性,如果有人在我的工作基础上构建,可能会导致问题

在索引列表时,有什么内置方法可以确保Python3.x不会隐式地将字节转换为其他类


[编辑:我看到这次使用冒号恰好得到了我想要的结果,但我不明白为什么,因为我不知道为什么,我不相信它以后不会断开。]

范围
[x:y]
返回的类型总是相同的,它自然是子列表/子字节。 [x] 然后是单个数组项。bytes是字节值的列表(仅为int)

int列表的行为方式相同

>>> a = [1, 2, 3]
>>> a[0:1] 
[1]
>>> a[0]
1

Range
[x:y]
总是返回相同的类型,它自然是子列表/子字节。 [x] 然后是单个数组项。bytes是字节值的列表(仅为int)

int列表的行为方式相同

>>> a = [1, 2, 3]
>>> a[0:1] 
[1]
>>> a[0]
1

谢谢你的回答。我对字节的行为方式而不是C中一个简单的8位字符的行为方式感到困惑,但经过一点测试,我发现如果我将“字节”视为“整数列表”,那么我观察到的是有意义的。谢谢你的回答。我对字节的行为方式而不是C中一个简单的8位字符的行为方式感到困惑,但在对它进行了一点测试之后,我发现如果我将“字节”视为“整数列表”,那么我所观察到的是有意义的。