Azi*_*Mez 0 python arrays string
谁能解释一下为什么/如何下面的代码获取从0 到 100的数字
[代码]
print(*range(*b'e'))
Run Code Online (Sandbox Code Playgroud)
[结果]
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
Run Code Online (Sandbox Code Playgroud)
你可以“从内到外”地看待这样的事情:
'e'只是字符串中的字母“e”。b但是,当以as in为前缀时b'e',它定义了一个字节序列,它只是一系列原始字节,而不是像字符串中那样的编码字符。
您可以在字节序列上使用解包运算符*来获取各个字节的整数值,例如,[b'e']将计算为[101],因为字母“e”的 ascii 值是 101,所以b'e'实际上只是意味着“创建一个仅包含该字节的字节序列”十进制值为 101"。
如果将解压的字节序列传递到一个范围,因为它只有一个值,那么您将得到与range(101)from等效的值range(*b'e')。
像范围这样的序列也可以被解包,按顺序从范围中获取各个值,这就是外部发生的情况 - 范围中的所有值都被解包并作为参数传递给函数print()。
这就是为什么要print(*range(*b'e'))打印从 0 到 100 的数字。当然,你只会这样写来教别人一些有关 Python 的知识。这是可怕的代码。