为何逗号在Python变量赋值中失效却可在print()函数中正常使用?
问题
以下Python代码执行后输出结果带有括号和引号:
my_name = "Ali" my_age = 22 place_of_work = " TD Bank" introduction = 'Hi, my name is ' + my_name + ' and I am' , my_age , 'years old.' + ' I work at' + place_of_work + '.' print(introduction)
但将拼接内容直接放入print()函数中却能正常输出预期文本,想请教为何变量赋值时使用逗号无法达到预期效果?
回答
这是因为在Python里,逗号在赋值语句中会创建一个元组(tuple),而非将各元素拼接成字符串。
你给introduction赋值时用了逗号,这个变量实际存储的是一个包含三个元素的元组:第一个是拼接好的字符串'Hi, my name is Ali and I am',第二个是整数22,第三个是拼接好的字符串'years old. I work at TD Bank.'。打印元组时,Python会按照元组的默认格式输出,也就是用括号包裹元素,字符串元素还会带上引号,这就是你看到的奇怪输出。
而直接把这些内容放进print()函数时,逗号的作用完全不同——print()会将逗号分隔的多个参数各自转换为字符串,然后自动用空格连接后输出,不会生成元组,所以结果就是你想要的正常文本。
如果想在赋值时就得到拼接好的字符串,有两种常用方法:
- 把所有部分用
+拼接,注意要把整数my_age转为字符串,比如str(my_age):introduction = 'Hi, my name is ' + my_name + ' and I am ' + str(my_age) + ' years old. I work at' + place_of_work + '.' - 用f-string更简洁直观:
introduction = f'Hi, my name is {my_name} and I am {my_age} years old. I work at {place_of_work}.'
内容的提问来源于stack exchange,提问作者ali
相关产品推荐
相关产品推荐

