Python中忘记使用'print'函数,例如(print "hello world") vs ("hello world")

5
>>> print "hello world"
hello world
>>> "hello world"
'hello world'
>>>

有什么区别?

Python的Hello, World!示例主要使用:

print "hello world"

我可以去掉print并且只使用"Hello world"来进行Python介绍吗?


1
这是一个令人惊讶的好问题。据我所知,最终结果在技术上基本相同,但通过打印输出更可取,因为处理器可以直接转到“str”命令,而不必弄清楚它应该如何处理该行。 - AaronB
它是 *"Hello, World!"*,而不是 *"hello world"*(四处更改)。 - Peter Mortensen
7个回答

12

区别在于print调用str,而REPL(读取评估打印循环)的默认操作是对对象调用repr,除非它是None

请注意,如果您不在交互式解释器中工作(不在REPL中),则在没有print的版本中您将看不到任何输出。

还要注意输出之间的差异。 repr会在字符串上添加引号。


4
如果您将空格替换为换行符,您会发现它们在REPL中甚至并不真正起作用。
>>> print "hello\nworld"
hello
world
>>> "hello\nworld"
'hello\nworld'

如果您尝试使用

"hello\nworld"

如果在程序中单独使用,当然不会得到任何输出


也许需要更新到Python 3?(*"SyntaxError: Missing parentheses in call to 'print'"*) - Peter Mortensen

1
这是一个非常好的问题,事实上,在我开始学习Python时也有同样的疑问。 首先,我们将观察这两个不同程序的不同输出。

程序类型1

>>> print "hello world"
hello world

使用打印功能的程序,我们知道是用于打印给定的字符串或数字数据。 程序类型2
>>> "hello world"
'hello world'
>>> 'hello world'
'hello world'

当不使用print函数,而是直接在单/双引号中给出字符串以打印时,答案也会被打印在引号内。尽管不使用print命令可能很容易,但我们不需要这种类型的输出来运行程序。 这只在Python命令行中才可能。如果程序保存在单独的文件中并将完全执行,则不可能。

1
如果你了解一点Bash脚本,你会发现echo '$HOME'将会输出$HOME字母而不是$HOME的实际值,我的意思是/home/user/。

所以在Python中,print函数将被解释为双引号和单引号相同的东西。如果没有引号或者一个不必使用双引号的句子,我只使用""。虽然,你仍然可以用\"来做到这一点。

例子 -

print 'hello\nworld' -> hello
                        world

print "hello\nworld" -> hello
                        world

并且

'hello\nworld' -> hello\nworld

如果有时候我需要原始输出,我不会使用print或者尝试其他解决办法。同时,如果我必须使用print函数输出原始字符串,我只会使用这个 -
print repr("hello\n\tworld\\") -> 'hello\n\tworld\\'

这取决于您的情况。

随意编辑/建议以获得更好的改进,我在此答案中可能会犯很多错误和误导。


1
你正在运行Python交互式shell。 print "hello world":你执行了一个函数调用,print函数输出了你提供的字符串到默认的流文件标准输出。参见print >>> "hello world":这只是让Python解释器执行一行代码,该代码仅为字符串。由于你在运行Python交互式shell,因此shell将在屏幕上显示字符串"hello world"。

0

事实上,你之所以能够执行任何操作,是因为你正在使用Python shell。 为了证明这一点,如果你实际上使用Python文件,它将什么也不会做:

Python 3.7.7 (tags/v3.7.7:d7c567b08f, Mar 10 2020, 10:41:24) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
==== RESTART: C:/Users/s-wan/AppData/Local/Programs/Python/Python37/testhelloworld.py ===
>>>

但是如果你在shell中实际使用它,那么它会用单引号打印出来:

>>> "Hello World"
'Hello World'

使用

print('hello world')

将会打印出不带引号的“hello world”。Shell 和实际文件可能会产生不同的结果。


"==== RESTART:" 是什么?它是字面意思吗?它是输入还是输出?它来自哪里? - Peter Mortensen

-1

如果你在命令行上,你可以避免使用print函数。否则,你必须使用print函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接