0

所以在这里我有以下代码

def u_id(_id = '6397' , uid = '97492035'):
  n = _id if _id != None else '5000'
  try:
    return "".join(list(map(lambda x: str(x[0] + x[1])[-1], list(zip(list(map(lambda x: int(x), n)), list(map(lambda x: int(x), uid[4:])))))))
  except ValueError:
    return "none"

老实说,这看起来相当不必要。该函数的工作方式是接受提供的 uid 和 _id 并返回“6119”。基本上我无法从它的编码方式中弄清楚这段代码的工作方式。是否有一种不同且不那么令人费解的编码方式?或者如果不解释这个函数是如何工作的。谢谢你。

4

2 回答 2

0

看起来您的功能可以像这样简化:

"".join(str(int(x) + int(y))[-1] for x, y in zip(_id, uid[4:]))

但是对于给定的参数,它正在返回'8322',而不是'6119'

于 2013-09-01T06:02:56.020 回答
0

该功能确实被混淆了,但它并没有像您认为的那样做。你说它返回 '6119' 但是如果我运行以下代码

def u_id(_id = '6397' , uid = '97492035'):
  n = _id if _id != None else '5000'
  try:
    return "".join(list(map(lambda x: str(x[0] + x[1])[-1], list(zip(list(map(lambda x: int(x), n)), list(map(lambda x: int(x), uid[4:])))))))
  except ValueError:
    return "none"

print u_id()

我的输出是8322

我还要补充一点,代码使用的是 2-space 缩进,这不是很正统,最好使用 4-space。

我不会为你解决这个问题(它看起来很乏味,写这个的人不是很清楚!)但我会告诉你如何解决它 - 你需要得到每个内部函数,把它们放在他们自己的行并打印出他们每个人的输出。

于 2013-09-01T04:45:46.480 回答