为什么我不能“字符串”.print()?

时间:2012-09-04 23:59:30

标签: python ruby

我对Python和Ruby(以及其他语言)中的print()的理解是它是字符串(或其他类型)的方法。因为它是如此常用的语法:

  

打印“hi”

作品。

那么为什么Python中的"hi".print()或Ruby中的"hi".print不起作用?

7 个答案:

答案 0 :(得分:9)

当您执行"hi".print()之类的操作时,您暗示字符串对象"hi"具有方法print。不是这种情况。相反,print是一个将字符串(或其他类型)作为输入的函数。

答案 1 :(得分:4)

Ruby确实有一个方法Object#displaydoc here),它将对象的表示发送到当前输出流,或者指定为参数。

(如果我在一行末尾使用;来抑制返回值的打印,我发现在irb中很难使用;如果我这样做,display的输出即使我刷新了流,也没有显示。)

答案 2 :(得分:2)

为什么要起作用?字符串类很少有void print方法 - 你永远不需要它们,因为标准的静态print函数无论如何都可以打印这些字符串。请务必注意:method(someObject) 必然与someObject.method()相同。

答案 3 :(得分:2)

字符串上的方法。在Python 3之前,它是语句(就像breakimport),您可以同时使用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