variable_c 不知从何而来

问题描述 投票:0回答:1

我正在 picoCTF(Codebook)上做 CTF,有一个简单的挑战需要解决。但我注意到给定的脚本中有一些我不明白的东西。
其全部内容的代码如下:

def str_xor(secret, key):
    #extend key to secret length
    new_key = key
    i = 0
    while len(new_key) < len(secret):
        new_key = new_key + key[i]
        i = (i + 1) % len(key)        
    return "".join([chr(ord(secret_c) ^ ord(new_key_c)) for (secret_c,new_key_c) in zip(secret,new_key)])

我不明白的是变量

secret_c
new_key_c
从何而来。它们没有被定义,但是可以工作 - 我预计会出现错误。额外的“_c”是否来自某些东西?这是一些与编译相关的Python行为吗?,C?还有别的吗?

python variables var
1个回答
0
投票

这些名称来自列表理解本身 - 特别是

for (secret_c,new_key_c) in zip(secret,new_key)
部分。名称
secret_c
new_key_c
用作
zip
返回值的占位符。

您可以随意称呼它们。例如,这会做同样的事情:

return "".join([chr(ord(foo) ^ ord(bar)) for (foo,bar) in zip(secret,new_key)])
© www.soinside.com 2019 - 2024. All rights reserved.