Что такое правильный способ для форматирования многострочных dict в Питоне?
в Python я хочу написать многострочный дикт в своем коде. Есть несколько способов его форматирования. Вот некоторые из них, которые я мог бы придумать:
mydict = { "key1": 1,
"key2": 2,
"key3": 3, }
mydict = { "key1": 1,
"key2": 2,
"key3": 3,
}
mydict = {
"key1": 1,
"key2": 2,
"key3": 3,
}
Я знаю, что любой из вышеперечисленных синтаксически корректен, но я предполагаю, что есть один предпочтительный стиль отступа и разрыва строки для Python dicts. Что это?
Примечание: это не проблема синтаксиса. Все вышеперечисленное являются (насколько я знаю) действительными инструкциями Python и эквивалентны друг другу.
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==" )
во-первых, как сказал Стивен Румбальски, "PEP8 не решает этот вопрос", поэтому это вопрос личных предпочтений.
Я бы использовал подобный, но не идентичный формат, как формат 3. Вот моя, и почему.
my_dictionary = { # Don't think dict(...) notation has more readability "key1": 1, # Indent by one press of TAB (i.e. 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()
Так как ваши ключи являются строками и так как мы говорим о читаемости, я предпочитаю:
mydict = dict( key1 = 1, key2 = 2, key3 = 3, )
обычно, если у вас есть большие объекты python, их довольно сложно отформатировать. Я лично предпочитаю использовать некоторые инструменты для этого.
здесь python-beautifier - www.cleancss.com/python-beautify это мгновенно превращает ваши данные в настраиваемый стиль.
из моего опыта работы с учебниками и другими вещами номер 2 всегда кажется предпочтительным, но это личный выбор предпочтений больше, чем что-либо еще.
Comments