为什么函数可以在Python中转换而不是PHP?

时间:2010-11-09 19:52:03

标签: php python programming-languages

我不是说这个问题是关于Python与PHP,而是关于语言。我使用Python和PHP作为例子,因为我知道它们。

在Python中,我们可以mytoken = mystring.split(mydelimiter)[1]访问str.split返回的列表,而无需将其分配给列表。 在PHP中,我们必须在访问它之前将数组放入内存中,如$mytokenarray = explode($mydelimiter, $mystring); $mytoken = $mytokenarray[1];中所示。据我所知,不可能像在Python中那样在一个语句中执行此操作。

这种差异背后发生了什么?

3 个答案:

答案 0 :(得分:1)

这是语言作者选择制作的设计决策。一般来说(当然并非总是如此)语言越好,语言越慢。例证:Ruby。

答案 1 :(得分:1)

如果您尝试在php中执行此操作

$mytokenarray = explode($mydelimiter, $mystring)[1];

注意到您收到的错误:Parse error: syntax error, unexpected '['

这意味着php在尝试解析代码时会感到沮丧,而不是在尝试执行代码时。我怀疑这意味着php的语法(我听说传闻,虽然我真的不知道但是在飞行中生成)表示你不能在statementexpression之后加上'['无论他们称之为什么。相反,你可能只能在变量之后加上'['。

这是Python的语法。包含规则trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME的{​​{3}}从那里,您可以看到trailer属于atom,其中也包含[。你开始觉得它很复杂。

Blah blah blah,长话短说,了解编译器,甚至更好,写一个玩具语言。然后,您将对语言怪癖有很多见解。

答案 2 :(得分:1)

从版本5.4开始,PHP现在可以使用此功能。