7

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

打印“嗨”

作品。

那么为什么"hi".print()在 Python 或"hi".printRuby 中不起作用呢?

4

7 回答 7

9

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

于 2012-09-05T00:01:49.440 回答
4

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

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

于 2012-09-05T05:31:08.910 回答
2

为什么它应该起作用?字符串类很少有 voidprint方法——而且你永远不需要它们,因为标准的静态print函数无论如何都可以打印这些字符串。需要注意method(someObject)的是:不一定someObject.method().

于 2012-09-05T00:02:19.170 回答
2

不是字符串上的方法。在Python 3之前,它是一个语句(就像breakor一样import),您可以同时使用print "hi"and print("hi")。从 Python 3 开始,它被替换function,因此您不能再使用print "hi"

打印是一个函数

print 语句已替换为 print() 函数,使用关键字参数替换旧 print 语句 (PEP 3105) 的大部分特殊语法。

于 2012-09-05T00:04:29.630 回答
2

你建议str.print应该怎么做?

打印到标准输出?标准错误怎么样?还是文件?还是串口?

打印到标准输出确实是一种特殊情况,但它无处不在,有时会被忽视。

那么我们每次创建字符串时都必须指定 str 应该打印到哪里?

至少我们不得不说

"foo".print(sys.stdout)

希望这对你来说也很糟糕。这是责任混淆

于 2012-09-05T00:09:10.823 回答
0

print不是 Python 中字符串的方法(我相信在 Ruby 中)。这是一个语句(在 Python 3 中它是一个全局函数)。为什么?一方面,并​​非您可以打印的所有内容都是字符串。怎么样print 2

于 2012-09-05T00:02:37.050 回答
-1

如果您更喜欢在 Ruby 中使用方法而不是语句,您可以使用方法 display( "test".display) 来实现此目的或轻松定义新方法,例如

class String
  def print
    puts self
  end
end

并像这样使用它

"test".print
于 2012-09-05T08:45:33.293 回答