Python2与Python3中print用法的差异详解
本文详解Python2与Python3中print用法的差异。Python3中print为内置函数,必须加括号并支持sep、end等多参数;Python2中print为语法结构,可省略括号但需注意元组解析问题。此外,Python2的input存在字符串输入陷阱,推荐使用raw_input。
Python2与Python3 print机制概述
在Python2和Python3版本中,均提供了用于输出信息的print机制,但两者在实现方式和行为上存在显著差异。
这些差异主要体现在以下几个核心方面:
print语法与函数的核心差异
首先,在Python3中,print是一个内置函数,拥有多个参数;而在Python2中,print是一个语法结构(语句)。
其次,在Python2中打印字符串时可以省略括号,例如print 'hello world';但在Python3中,必须使用括号,即print("hello world")。
第三,在Python2中,input()函数要求输入的字符串必须加引号,为了避免读取非字符串类型时发生的一些意外行为,开发者通常不得不使用raw_input()来代替input()。
在Python3中,开发者可能认为print同时具备函数和语法两种身份不够清晰,因此只保留了函数的身份。
>>> print 'pythontab.com'
SyntaxError: Missing parentheses in call to 'print'
因此,在Python3中print必须使用括号,因为它本质上就是一个函数。
Python3 print函数的参数详解
Python3中的print函数支持多个参数,其函数原型如下所示:
print(value1, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
从上述方法原型可以看出:
1. print可以接受多个参数,支持同时打印多个字符串(其中...表示任意数量的字符串);
2. sep参数用于指定多个字符串之间的连接字符;
3. end参数用于指定字符串结尾添加的字符。通过设置该参数,可以轻松实现打印不换行的效果。在Python2.x中,print语句输出字符串后默认换行,若不希望换行,只需在语句末尾加一个“,”即可。然而在Python 3.x中,由于print()变为内置函数,这种加“,”的老方法不再适用。
>>> print("python", "tab", ".com", sep='')
pythontab.com
>>> print("python", "tab", ".com", sep='', end='') #就可以实现打印出来不换行
pythontab.com
Python2 input函数的陷阱与raw_input
3. Python2中input函数的潜在问题
print ("what do you like")
a = input("Enter any content:")
print ("i like",a)
知识点扩展:
在Python2中,打印字符串时可以省略括号,例如print 'hello world';而在Python3中,必须使用括号,即print("hello world")。
在Python3中,print必须使用括号,因为它是函数。
Python2中print加括号的元组解析问题
在Python2中,print语句加括号可能会产生以下后果:
在Python2中,如果给print加括号,解释器可能会将其解析为元组,例如:
print ('hhh','ggg')
对于上述代码,Python2会打印出('hhh','ggg')(包含括号和逗号),而Python3则打印出hhh ggg(默认以空格分隔)。
除非括号内仅包含一个字符串,例如('hhh'),此时它不被视为元组。在这种情况下,print ('hhh')在Python2和Python3中都会打印出hhh,因为('hhh')等价于'hhh',所以Python2会将其视为字符串而非元组。
至此,关于新手学习Python2和Python3中print不同用法的介绍到此结束。如需了解更多Python2和Python3中print的差异,请搜索本站历史文章或继续浏览相关文章。希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













