Правильное использование функции формата python3

#python-3.x

#python-3.x

Вопрос:

Я видел следующий пример соответствия кода.

 for (i in 0 until stack.size)  # bad
while (!stack.isEmpty)  # good
 

С этой точки зрения, какой код является лучшим в моей ситуации.

В Byte-of-python функция format, как говорят, упрощает код, но мне интересно, является ли безрассудное использование более вредным.

 START_TIME = time.time()
time.sleep(1)
END_TIME = time.time()

print("spend time : {time}".format((END_TIME - START_TIME) = 'time') 
# Why is this a grammatical error?

print("spend time : "   str(END_TIME - START_TIME ))
 

Ответ №1:

Метод str.format обеспечивает читаемость кода, особенно когда вам нужно вставить что-то в середине строк. Представьте, что вы хотите создать строку следующего содержания: «Погода сегодня {sun_status} с высоким значением {high_temp}, низким значением {low_temp} и {percip_chance}% вероятность дождя». Записать это с помощью конкатенации строк было бы очень некрасиво…

 s1 = "The weather is "   sun_status   " today with a high of "   str(high_temp)   ", a low of "   str(low_temp)   ", and a "   str(percip_chance)   "% chance of rain."
 

Метод str.format очищает это и выполняет все приведение типов str для вас (если вам это нужно)

 s1 = "The weather is {sun_status} today with a high of {high_temp}, a low of {low_temp}, and a {percip_chance}% chance of rain"
     .format(sun_status=sun_status, 
             high_temp=high_temp,
             low_temp=low_temp, 
             percip_chance=percip_chance)

 

В вашем коде также есть ошибка. когда вы вызываете метод str.format , ключевое слово может быть любым, что вы поместили в фигурные скобки {} и не заключено в строки. Это также должно быть первым.

 print("spend time : {time}".format(time = (END_TIME - START_TIME)))
 

Ответ №2:

В вашем print заявлении отсутствует скобка в конце, и это правильный синтаксис:

 print("spend time : {time}".format(time = END_TIME - START_TIME))
 

Обратите внимание, что вы можете упростить это до:

 print("spend time : {}".format(END_TIME - START_TIME))
 

Или использование f-строк:

 print(f"spend time : {END_TIME - START_TIME}")
 

format() Для удобства чтения обычно предпочтительнее использовать или f-строки вместо конкатенации строк. Это также позволяет вам комбинировать различные типы данных без необходимости сначала приводить их к строке.

Комментарии:

1. Короткая форма format() — это то, чего я никогда раньше не видел, но я обязательно буду использовать ее в будущем. Спасибо за информацию!