有没有办法创建一个不需要括号的函数?

时间:2011-08-30 12:47:53

标签: python

嗯,这可能是一个奇怪的问题,我知道。但是搜索谷歌的python和大括号只能给出一种答案。

我想要的是低级别的东西,可能不是非常pythonic。有没有一种明确的方法来编写一个使用的函数:

>>>my_function arg1, arg2

而不是

>>>my_function(arg1, arg2)

我搜索一种让函数像旧版本一样工作的方法(在Python< 3.0中),你不需要使用括号。如果这不是那么简单,有没有办法看到“打印”的代码?

5 个答案:

答案 0 :(得分:2)

您可以在Ruby中执行此类操作,但不能在Python中执行。 Python重视干净的语言和明确而明显的结构。

  

>>>进口这个   蒂姆·彼得斯的Python之禅

     

美丽胜过丑陋   明确胜过隐含。
  简单比复杂更好   复杂比复杂更好   扁平比嵌套好。
  稀疏比密集更好   可读性很重要   特殊情况不足以打破规则   虽然实用性超过了纯度   错误绝不应该默默无闻   除非明确沉默。
  面对模棱两可,拒绝猜测的诱惑   应该有一个 - 最好只有一个 - 明显的方式来做到这一点   虽然这种方式起初可能并不明显,除非你是荷兰人   现在总比没有好。
  虽然从来没有比现在更好*。*   如果实施很难解释,那是个坏主意   如果实施很容易解释,那可能是个好主意   命名空间是一个很棒的主意 - 让我们做更多的事情吧!

答案 1 :(得分:0)

对括号的要求在于Python解释器,而不在print方法(或任何其他方法)本身的代码中。

(正如eph在评论中指出的那样,print是一种陈述而非方法。)

答案 2 :(得分:0)

正如您已经被告知的那样,Python 2.x中的print不是一个函数,而是一个语句,如iffor。这是一个“一等”的公民,有自己特殊的语法。您不能创建任何语句,并且所有函数都必须使用括号(在Python 2.x和3.x中)。

答案 3 :(得分:0)

没有。函数调用需要括号和两个直接连续的标识符(不包括保留字)是语法错误。这在语法中是一成不变的,不会改变。你可以支持这一点的唯一方法是制作你自己的语言实现,至少是一个语言的前端 - 这可能比它的价值更麻烦,并且需要一些重要的学习(除非你当然不是解析专家) )。如果您想尝试使用它,请参阅有关材料的编译器构造的大量堆栈溢出问题。

答案 4 :(得分:0)

你想做什么?如果您试图将此代码嵌入到另一个程序(非python)或以某种方式从解释器调用,您可以使用sys.argv替代吗?以下是sys.argv如何运作的示例。