• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

为什么-Python-3-把-print-改为函数

python 搞java代码 3年前 (2022-06-26) 40次浏览 已收录 0个评论

摘要
题目已阐明了所有——本 PEP 提议应用新的内置函数 print() 来代替 print 语句,并倡议给此新函数应用非凡的签名(signature )。

原理论述
print 语句 早就被列在了不牢靠的语言个性列表中,例如 Guido 的“Python 之悔”(Python Regrets)演讲【1】,并打算在 Python 3000 版本移除。因而,本 PEP 的目标并不陈腐,只管它可能会在 Python 开发人员中引起较大争议。

以下对 print() 函数的争议是提取自 Guido 自己的 Python-3000 音讯【2】:

  • print 是惟一的应用程序级性能,并领有专属的语句。在 Python 的世界里,当某些工作在不通过编译器的帮忙就无奈实现的状况下,语法(syntax)通常会被用作最初的伎俩。在这种异常情况下,print 并不适合。
  • 在开发应用程序的时候,人们常常须要用更简单的货色来代替 print 输入,例如调用 logging,或者调用其它的 I/O 库。至于 print() 函数,这是个含糊其辞的字符替换,现在它混搭了所有那些括号,还可能会转换 >>stream 款式的语法。
  • 为 print 设置非凡的语法只会给进化带来一个更加微小的屏障,例如这有个猜测,一个新的 printf() 函数不必多久就会呈现,跟 print() 函数共存。
  • 当须要一个不同的分隔符(不是空格,或者没有分隔符)时,没有简略的办法能够将 print 语句转换成另一个调用。同样地,应用其它一些分隔符而非空格时,根本无法不便地打印对象。
  • 如果 print() 是个函数,就能够非常容易地在一个模块内替换它(仅需 def print(*args):…),甚至能够在整个程序内替换(例如放一个不同的办法进 __builtin__.print)。实际上,要做到这点,还能够写一个带 write() 办法的类,而后定向给 sys.stdout ,这想法不错,但无疑是一个十分微小的概念飞跃,而且跟 print 相比,它工作在不同的层级。

设计规格
print() 的书写形式取自各种邮件,最近公布在 python-3000 列表里的是【3】:

def print(*args, sep=' ', end='\n', file=None)

调用像:

print(a, b, c, file=sys.stderr)
相当于以后的:

print >>sys.stderr, a, b, c
可选的 sep 与 end 参数相应地指定了每个打印参数之间及之后的内容。

softspace 性能(以后在文件上的半机密属性,用于通知 print 是否要在第一个条目前插入空格)会被删除。因而,以后版本的以下写法不能被间接转换:

print "a",
print

它不会在“a”与换行符之间打印一个空格。

(译注:在 3.3 版本,print() 函数又做了改变,减少了默认参数 flush=False)

向后兼容性
本 PEP 中提出的改变将以致现在的 print 语句生效。只有那些恰好用括号突围了所有参数的写法能力在 Python 3 版本中失效,至于其它,只有加上了括号的值能力放弃原样打印。例如,在 2.x 中:

>>> print ("Hello")
Hello
>>> print ("Hello", "world")
('Hello', 'world')

而在 3.0 中:

>>> print ("Hello")
Hello
>>> print ("Hello", "world")
Hello world

侥幸的是,因为 print 是 Python 2 中的一个语句,所以它能够被通过自动化工具而检测到,并牢靠而准确地替换掉,因而应该没有重大的移植问题(如果有人来写这个工具的话)。

实现
更改将在 Python 3000 分支中实现(修订版从 53685 到 53704)。大多数在维库代码(legacy code)曾经做转换了,但要抓出发行版本中的每个 print 语句,还须要继续一直地致力。

以上就是本次分享的所有内容,想要理解更多 python 常识欢送返回公众号:Python 编程学习圈 ,发送 “J” 即可收费获取,每日干货分享


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:为什么-Python-3-把-print-改为函数

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址