#python #concatenation
#python #конкатенация
Вопрос:
print("This is a string" 123)
Конкатенация выдает ошибку, но вместо этого используется запятая.
Комментарии:
1. Это только в контексте
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'