2010-01-12 2 views
12

Это как-то связано с question about big strings and PEP8.PEP8 - 80 Персонажи - большие целые числа

Как я могу создать свой сценарий, который имеет следующую строку PEP8-совместимый (правило «Максимальная длина линии»)?

pub_key = { 
    'e': 3226833362680126101036263622033066816222202666130162062116461326212012222403311326222666622610430466620224662364142L, 
    'n': 226421003861041248462826226103022608220328242204422684232640331238220232226321616266146243302342688266846281802662666622213868114632268211186223606846623310006662260110460620201618186828411322260686632603226636226662262862212140221422102106336342228236361106240226122644614266186283436228208626640846820224661642086022346422443282224682686612228404266842316822624342226666622264826123822122031361242246432886612624262663222232331438863220022020826266366016100422L 
} 
+0

Экспоненциальное? –

+0

@Anon: Как? (Я так же загадочен!) –

+0

Не слишком знакомы с синтаксисом Python, но, предполагая, что в этой декларации можно выполнить арифметику, это будет что-то вроде '32268333626801261010362 * pow (10, butmany)', а затем добавить больше на каждый следующий линия. –

ответ

22

Но самое главное: знать, когда быть несовместимым - иногда стиль руководства просто не применяется. Когда в сомневайтесь, используйте свое лучшее суждение.

source

В этом случае я бы просто оставить большие целые числа, как есть.

+0

Ура для использования наших мозгов! –

2

Я не думаю, что вы можете. Руководящие принципы в PEP8 являются руководящими принципами, бывают ситуации, когда просто невозможно следовать рекомендациям.

2

импортировать этот

... Особые случаи не настолько особенным, чтобы нарушать правила. Хотя практичность превосходит чистоту. ...

4
'e': 3226833362680126101036263622033066816222202666130162062116461326212012L \ 
    * 10**45 \ 
    + 222403311326222666622610430466620224662364142L 

Я ни в коей мере поддержать это.

5

лучший способ, которым я могу думать

pub_key = { 
    'e': long('3226833362680126101036263622033066816222202666130162062116461326' 
      '212012222403311326222666622610430466620224662364142'), 
    'n': long('2264210038610412484628262261030226082203282422044226842326403312' 
      '3822023222632161626614624330234268826684628180266266662221386811' 
      '4632268211186223606846623310006662260110460620201618186828411322' 
      '2606866326032266362266622628622121402214221021063363422282363611' 
      '0624022612264461426618628343622820862664084682022466164208602234' 
      '6422443282224682686612228404266842316822624342226666622264826123' 
      '8221220313612422464328866126242626632222323314388632200220208262' 
      '66366016100422'), 
} 

ровно 80 символов.

+3

Вызов и дополнительная функция, чтобы следовать руководству по стилю, является чрезмерным ИМХО. Интересное решение. – GmonC

1

Это можно сделать. Длинные строки могут быть разбиты на несколько строк, обертывая выражения в круглых скобках. Вот где это объясняется:

http://www.python.org/dev/peps/pep-0008/

Смежные вопросы