我对Python和Ruby(以及其他语言)中的print()
的理解是它是字符串(或其他类型)的方法。因为它是如此常用的语法:
打印“hi”
作品。
那么为什么Python中的"hi".print()
或Ruby中的"hi".print
不起作用?
答案 0 :(得分:9)
当您执行"hi".print()
之类的操作时,您暗示字符串对象"hi"
具有方法print
。不是这种情况。相反,print
是一个将字符串(或其他类型)作为输入的函数。
答案 1 :(得分:4)
Ruby确实有一个方法Object#display
(doc here),它将对象的表示发送到当前输出流,或者指定为参数。
(如果我在一行末尾使用;
来抑制返回值的打印,我发现在irb中很难使用;如果我这样做,display
的输出即使我刷新了流,也没有显示。)
答案 2 :(得分:2)
为什么要起作用?字符串类很少有void print
方法 - 你永远不需要它们,因为标准的静态print
函数无论如何都可以打印这些字符串。请务必注意:method(someObject)
不必然与someObject.method()
相同。
答案 3 :(得分:2)
不 字符串上的方法。在Python 3之前,它是语句(就像break
或import
),您可以同时使用print "hi"
和{{1} }。从Python 3开始,函数为replaced,因此您无法再使用print("hi")
:
打印是一种功能
print语句已被替换为 print()函数,用关键字参数替换大部分 旧打印语句的特殊语法(PEP 3105)。
答案 4 :(得分:2)
您的建议str.print
应该做什么?
打印到标准输出? stderr怎么样?还是档案?还是一个串口?
打印到stdout确实是一个特殊情况,但它无处不在,有时可能会被忽视。
然后我们必须在每次创建字符串时指定str应该打印的位置吗?
至少我们不得不说
"foo".print(sys.stdout)
希望你看起来也很糟糕。这是责任的混乱
答案 5 :(得分:0)
print
不是Python中字符串的方法(或者我相信在Ruby中)。这是一个声明(在Python 3中它是一个全局函数)。为什么?首先,并非您可以打印的所有内容都是字符串。 print 2
怎么样?
答案 6 :(得分:-1)
如果你更乐意在Ruby中使用方法而不是语句,你可以使用方法display("test".display
)来实现这一点,或者轻松定义一个新方法
class String
def print
puts self
end
end
并像这样使用
"test".print