我需要引入大整数常量(Diffie-Hellman密钥交换的素数)
以符合PEP8的方式来做这件事,最适合的/最漂亮的方式是什么?最好不要反斜杠。你知道吗
我目前的做法是:
N = '''FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1
29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD
EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245
E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED
EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381
FFFFFFFF FFFFFFFF'''
PRIME = int('0x{0}'.format(N.replace('\n', '').replace(' ', '')), 16)
不是很漂亮,但比:
PRIME = 179769313486231590770839156793787453197860296048756011706444423684197180216158519368947833795864925541502180565485980503646440548199239100050792877003355816639229553136239076508735759914822574862575007425302077447712589550957937778424442426617334727629299387668709205606050270810842907692932019128194467627007L
编辑:
更改为PRIME = int(re.sub('\s+', '', N), 16)
如果你想要好看的东西,也许你可以把字符串转换成整数。虽然它可能不是最佳实践,因为我从来没有在实践中实际使用过它,但是我认为它比原来的方法更清楚一些,因为转换有限
坦白说,你所拥有的是相当不错的。唯一明显的变化是您的最终转换:您可以删除
"0x{0}".format
位,只传递替换的字符串,因为您给int
基16。你知道吗除此之外,您可以始终将其隐藏为函数:
从PEP 8 Style Guide
因此,保持常量不变,因为它比任何其他不明显的黑客更具可读性
最重要的是
Readability counts.
没有什么能超越Python的核心原则
如果你坚持
相关问题 更多 >
编程相关推荐