print(“ str”,a)和print(“ str” + a)之间的区别

时间:2020-06-24 15:47:45

标签: python printing

我是python3的初学者,我使用很多printlogging模块来遵循控制台上的代码。下面是一个简单的示例:之间有什么区别

number = "seven"
print("I cooked " , number , " dishes")

number = "seven"
print("I cooked " + number + " dishes")

7 个答案:

答案 0 :(得分:0)

print语句支持多种解析值的方法。

number = 'seven'

示例:在打印语句中添加参数的不同样式

print("I cooked " , number , " dishes")

C样式格式(旧):

print("I cooked %s dishes" % number)

C样式格式(新),使用fomat

print("I cooked {} dishes ".format(number))

f弦样式

print(f"I cooked {number} dishes")

字符串串联:

print("I cooked " + number + " dishes")

您不必坚持一种风格。您可以通过多种方式进行相同操作。

答案 1 :(得分:0)

内部差异在于该示例(无+号):

number = "seven"
print("I cooked " , number , " dishes")

正在打印3个单独的字符串对象。 "I cooked "是对象1,number是对象2," dishes"是对象3。因此,总共有3个对象。

在第二个示例中(带有+号):

number = "seven"
print("I cooked " + number + " dishes")

首先将3个单独的字符串压缩为1个新的字符串对象,然后再打印到stdout。因此,此示例总共有4个对象。

答案 2 :(得分:0)

运算符+仅可用于字符串。 运算符,可以用于任何类型,并且会在自动之前添加一个空格。 此外,+不仅可以用于打印,还可以在,不能的情况下将一个字符串添加到另一个字符串中。

答案 3 :(得分:0)

(请注意,在您拥有的两个示例中,只需运行它们,它们就会显示结果是不同的,因为第一个示例中的某些单词由双倍空格隔开。)

print()函数将接收字符串,每个字符串将在它们之间以' '的形式打印出来:

print('hello', 'world')

输出:

hello world

那是因为关键字参数sep。默认情况下,sep=' '只需添加以下内容即可更改:

print('hello', 'world', sep='\n')

输出:

hello
world

+运算符不会添加任何分隔符,它只会连接字符串:

print('hello' + 'world')

输出:

helloworld

答案 4 :(得分:0)

根据PEP3105打印,被认为是带有* args(多个位置参数)的函数。

要回答您的问题,结果是相同的;但是,您的实现是不同的。在第一种情况下,您给print提供了多个要打印的参数,而在第二种情况下,给了print一个您想要打印的串联字符串。

答案 5 :(得分:0)

使用时

number = "seven"
print("I cooked " , number , " dishes")

print获取3个不同的对象(3个字符串)作为参数,将它们转换为字符串,然后打印。

但是使用

number = "seven"
print("I cooked " + number + " dishes")

意味着首先将这三个字符串连接起来,然后作为一个对象传递到print

实际上,这意味着,例如,您这样做

print('xxx' + 5 + 'yyy')

它将抛出错误,因为不可能直接连接字符串和整数类型。

还要注意以下示例:

#concatenating 3 strings and passing them as one argument to print
>>> print('xxx' + 'a' + 'yyy',sep=',')
xxxayyy

#passing 3 strings as 3 arguments to print
>>> print('xxx','a','yyy',sep=',')
xxx,a,yyy

您可能会注意到,在第一个示例中,尽管使用了sep(因此它应该使用给定的分隔符分隔3个strigns),但是它不起作用,因为这些字符串首先连接在一起,然后作为一个参数传递给{ {1}}。但是,在第二个示例中,字符串作为分隔的参数传递,因此print起作用,因为sep=','仅知道它应该在每个给定的字符串之间传递分隔符。

答案 6 :(得分:0)

我们假设a = "how are you"b = "goodbye"是2个字符串变量。

  1. 如果我们这样做print(a, b)

该语句将首先打印 a ,然后打印 b 作为一行上输出的单独字符串:

输出:

> how are you goodbye

  1. 如果我们执行print(a + b),则该语句将把这两个变量 a b 连接在一起:

输出:

> how are yougoodbye (这里没有空格,因为在打印语句或变量中没有空格)