Какъв е правилният начин за форматиране на многоредовния текст в Python?

В Python, искам да напиша многоредов дикт в моя код. Има няколко начина да го форматирате. Ето няколко, за които мога да мисля:

  •  mydict = { "key1": 1, "key2": 2, "key3": 3, } 
  •  mydict = { "key1": 1, "key2": 2, "key3": 3, } 
  •  mydict = { "key1": 1, "key2": 2, "key3": 3, } 

Знам, че всяко от горните е синтактично правилно, но предполагам, че за диктовките на Python има един предпочитан отстъп и стил на прекъсване на реда. Какво е това?

Забележка. Това не е синтактичен проблем. Всички по-горе (доколкото знам) са валидни изявления на Python и са еквивалентни един на друг.

116
17 июня '11 в 18:35 2011-06-17 18:35 зададен от Райън Томпсън 17 '11 юни в 18:35 2011-06-17 18:35
@ 6 отговора

Използвам # 3. Същото се отнася и за дългите списъци, кортежите и т.н. Това не изисква добавянето на допълнителни пространства отвъд тиретата. Както винаги, бъдете последователни.

 mydict = { "key1": 1, "key2": 2, "key3": 3, } mylist = [ (1, 'hello'), (2, 'world'), ] nested = { a: [ (1, 'a'), (2, 'b'), ], b: [ (3, 'c'), (4, 'd'), ], } 

По същия начин, тук е моят предпочитан начин да се включат големи низове, без да се въвеждат никакви интервали (например, ще получите, ако използвате много линии с тройна котировка):

 data = ( "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABG" "l0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEN" "xBRpFYmctaKCfwrBSCrRLuL3iEW6+EEUG8XvIVjYWNgJdhFjIX" "rz6pKtPB5e5rmq7tmxk+hqO34e1or0yXTGrj9sXGs1Ib73efh1" "AAAABJRU5ErkJggg==" ) 
148
17 июня '11 в 18:39 2011-06-17 18:39 отговорът е даден от FogleBird 17 юни '11 в 18:39 2011-06-17 18:39

Първо, както каза Стефан Румбалски, "PEP8 не решава този въпрос", така че това е въпрос на лично предпочитание.

Бих използвал подобен, но не идентичен формат, като вашия формат 3. Тук е моето и защо.

border=0
 my_dictionary = { # Don't think dict(...) notation has more readability "key1": 1, # Indent by one press of TAB (ie 4 spaces) "key2": 2, # Same indentation scale as above "key3": 3, # Keep this final comma, so that future addition won't show up as 2-lines change in code diff } # My favorite: SAME indentation AS ABOVE, to emphasize this bracket is still part of the above code block! the_next_line_of_code() # Otherwise the previous line would look like the begin of this part of code bad_example = { "foo": "bar", # Don't do this. Unnecessary indentation wastes screen space "hello": "world" # Don't do this. Omitting the comma is not good. } # You see? This line visually "joins" the next line when in a glance the_next_line_of_code() btw_this_is_a_function_with_long_name_or_with_lots_of_parameters( foo='hello world', # So I put one parameter per line bar=123, # And yeah, this extra comma here is harmless too; # I bet not many people knew/tried this. # Oh did I just show you how to write # multiple-line inline comment here? # Basically, same indentation forms a natural paragraph. ) # Indentation here. Same idea as the long dict case. the_next_line_of_code() # By the way, now you see how I prefer inline comment to document the very line. # I think this inline style is more compact. # Otherwise you will need extra blank line to split the comment and its code from others. some_normal_code() # hi this function is blah blah some_code_need_extra_explanation() some_normal_code() 
20
07 дек. отговорът е даден от RayLuo 07 декември 2012-12-07 13:36 '12 в 13:36 2012-12-07 13:36

Тъй като ключовете ви са низове, и тъй като говорим за четливост, предпочитам:

 mydict = dict( key1 = 1, key2 = 2, key3 = 3, ) 
9
17 июня '11 в 20:40 2011-06-17 20:40 отговорът е даден на дуреш 17 юни '11 в 20:40 2011-06-17 20:40

Обикновено, ако имате големи python обекти, те са доста трудни за форматиране. Аз лично предпочитам да използвам някои инструменти за това.

Тук е python-beautifier - www.cleancss.com/python-beautify , който незабавно превръща вашите данни в персонализиран стил.

0
12 окт. отговорът е даден Max 12 oct. 2016-10-12 19:28 '16 в 19:28 2016-10-12 19:28

От моя опит с учебници и други неща, номер 2 винаги изглежда за предпочитане, но това е личен избор на предпочитания повече от всичко друго.

-2
17 июня '11 в 18:39 2011-06-17 18:39 Отговор е даден от Джейк на 17.06.11 в 18:39 2011-06-17 18:39

По правило не включвате запетая след окончателното въвеждане, но Python ще го поправи.

-6
17 июня '11 в 22:26 2011-06-17 22:26 Отговорът е даден от Джо на 17 юни 11 в 26: 26ч. 2011-06-17 22:26