Какой смысл использовать конкатенацию ( ) в Python, когда запятые (,) выполняют работу?

#python #concatenation

#python #конкатенация

Вопрос:

 print("This is a string"   123)
  

Конкатенация выдает ошибку, но вместо этого используется запятая.

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

1. Это только в контексте print . Если вы создаете новую переменную foo = 'Monty', 'Python' и foo = 'Monty' 'Python' делаете совершенно разные вещи.

Ответ №1:

Как вам уже сказали, ваш код выдает ошибку, потому что вы можете объединить только две строки. В вашем случае одним из аргументов конкатенации является целое число.

 print("This is a string"   str (123))
  

Но ваш вопрос скорее «плюс против запятой». Почему когда-либо следует использовать when , works?

Ну, это верно для print аргументов, но на самом деле есть и другие сценарии, в которых вам может понадобиться конкатенация. Например, в присваивании

 A = "This is a string"   str (123)
  

Использование запятой в этом случае приведет к другому (и, вероятно, неожиданному) результату. Это сгенерировало бы кортеж, а не конкатенацию.

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

1. Могу ли я спросить, что вы подразумеваете под синтаксически недопустимым, потому что делаете это A = "This is a string" , str (123) . Создало бы правильный кортеж.

Ответ №2:

Эй, вы пытаетесь объединить строку и целое число. Это приведет к ошибке типа. Вы можете попробовать что-то вроде

 print("This is a string" str(123))
  

Запятые (,) на самом деле не объединяют значения, они просто печатают их так, чтобы это выглядело как конкатенация.
Конкатенация, с другой стороны, фактически соединит две строки.

Ответ №3:

Это один из случаев print() . Однако, если вам действительно нужна строка, конкатенация — это способ:

 x = "This is a string, " str(123)
  

заставляет вас " This is a string, 123"

Должны ли вы написать

 x = "This is a string", 123
  

вы получите кортеж ("This is a string",123) . Это не строка, а совершенно другой тип.

Ответ №4:

Если у вас есть значение int в переменной, вы можете распечатать его с помощью f-string (строка формата). Формат принимает больше входных данных, таких как print(("one text number {num1} and another text number {num2}").format(num1=variable1, num2=variable2)

 x = 123
print(("This is a string {x}").format(x=x))
  

Приведенный выше код выводит:

 This is a string 123
  

Подробнее об этом можно прочитать здесь:
python-f-strings

Ответ №5:

 # You can concatenate strings and int variables with a comma, however a comma will silently insert a space between the values, whereas ' ' will not. Also ' ' when used with mixed types will give unexpected results or just error altogether.

>>> start = "Jaime Resendiz is"
>>> middle = 21
>>> end = "years old!

>>> print(start, middle, end)

>>> 'Jaime Resendiz is 21 years old!'
  

Ответ №6:

Это просто, потому 123 что это int тип, и вы не можете concatenate int использовать str type.

 >>> s = 123
>>> type(s)
<class 'int'>
>>>
>>> w = "Hello"  s
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
>>>
>>>
>>> w = "Hello"   str(s)
>>>
>>> w
'Hello123'
>>>
  

Вы можете увидеть ошибку, поэтому вы можете преобразовать s переменную, значение которой равно 123 строке, с помощью str() функции. Но в подобных ситуациях вы хотите объединить строки с другими типами? Я думаю, вам следует использовать f-strings

Пример

 >>> boolean = True
>>> fl = 1.2
>>> integer = 100
>>>
>>> sentence = f"Hello variables! {boolean} {fl} {integer}"
>>> sentence
'Hello variables! True 1.2 100'