【问题标题】:what do you call the feature where you can assign a variable to a function in Python then pass arguments to that variable?你把这个功能叫做什么,你可以在 Python 中将一个变量分配给一个函数,然后将参数传递给该变量?
【发布时间】:2017-08-06 16:04:18
【问题描述】:

你把Python的特性叫做什么地方:

  1. 您将函数分配给变量

    myPowerVariable = pow

    mySqrtVariable = math.sqrt

  2. 然后你用参数调用那个变量?

    myPowerVariable(2,3)

    prints 8

    mySqrtVariable(9)

    prints 3

如果你在 PHP 中尝试,它不会工作,希望有人能告诉我你怎么称呼这个功能。

谢谢

【问题讨论】:

  • 也许你的意思是“一流的对象”stackoverflow.com/questions/27392402/…
  • @VPfB 这些知识你不会从教程中获得,但只有你学习计算机科学才能获得?
  • @TheWolf 我不知道答案。但我想利用这个小小的评论来推荐好书。它们作为教程提供了更好的“基础”。
  • @VPfB 请继续,谢谢

标签: php python function


【解决方案1】:

在 PHP 中它们被称为 Variable functions 并且工作正常,假设您使用正确的 PHP 语法:

$myPowerVariable = 'pow';
echo $myPowerVariable(2, 3);  // prints 8

如果你这样做了:

$myPowerVariable = pow();

你得到:

警告:pow() 只需要 2 个参数,给定 0

因为您正在执行 pow() 并将结果分配给 $myPowerVariable 但未提供所需的参数。

这是您在 cmets 中提到的 Anonymous function 的一个简单示例:

$myPowerVariable = function($a, $b) {
    echo pow($a, $b);
};

$myPowerVariable(2, 3);

【讨论】:

  • 我从来不了解 PHP 中的匿名函数,关于匿名函数我只需要了解这些吗?
【解决方案2】:

这通常被称为functional programming,尽管在语法上有一些差异,但该功能确实存在于 PHP 中。以下在 PHP 中有效:

function myFunction() {
    echo 'here!';
}

$myVar = 'myFunction';

$myVar();

这也适用于 PHP:

class myClass
{
    function myMethod() {
        echo 'here!';
    }
}

$myVariable = ['myClass', 'myMethod'];

call_user_func($myVariable);

【讨论】:

  • 你分配给一个变量的string实际上可能是一个function,这不是很可怕,然后突然你有一个可以调用function的变量吗?还是我想多了?
  • @TheWolf 这可能有点危险,因为在 Python 示例中,如果未定义函数,赋值行会抛出 NameError,但在 PHP 中,直到您尝试才会引发错误调用变量函数,因为始终允许将字符串分配给变量。 PHP 版本可能会导致编译期间无法检测到运行时错误,具体取决于它的使用方式。
【解决方案3】:

首先,您的措辞混淆了:您实际上是在将一个函数分配给一个变量。

不管怎样,这是一个 Python 的例子,有first class functions。

【讨论】:

    猜你喜欢
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多