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



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

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

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

内部区别在于此示例(no + 符号(:

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 个对象。

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")

你没有必要坚持一种风格。您有多种选择来执行相同的操作。

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

(请注意,在你拥有的两个示例中,只需运行它们将显示结果是不同的,因为第一个示例将有一些用双空格分隔的单词。

print()函数将接收字符串,每个字符串之间将打印出一个' '

print('hello', 'world')

输出:

hello world

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

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

输出:

hello
world

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

print('hello' + 'world')

输出:

helloworld

根据PEP3105打印被认为是一个采用 *args(几个位置参数(的函数。

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

使用

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

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

但是使用

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

表示首先将这三个字符串连接起来,然后作为一个对象传递给print

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

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

它会抛出并出错,因为不可能直接连接字符串和 int 类型。

另请注意以下示例:

#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 个 strign(,但它不起作用,因为这些字符串首先连接起来,然后作为一个参数传递给print。但是,在第二个示例中,字符串作为单独的参数传递,因此sep=','工作,因为print只知道它应该在每个给定字符串之间传递分隔符。

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

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

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

输出:

> how are you goodbye

    如果我们
  1. 这样做print(a + b)语句会将这两个变量ab连接在一起:

输出:

> how are yougoodbye(由于 print 语句或变量中没有白色间距,这里没有间距(

最新更新