将函数定义为列表元素

The*_*nce 4 python

>>> list=[None]
>>> def list[0](x,y):
  File "<stdin>", line 1
    def list[0](x,y):
             ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

如何将函数定义为列表的元素?

Ray*_*ger 10

Python的def不够灵活地处理普通的左值list[0].该语言仅允许您使用标识符作为函数名称.以下是def语句语法规则的相关部分:

funcdef        ::=  "def" funcname "(" [parameter_list] ")" ":" suite
funcname       ::=  identifier
Run Code Online (Sandbox Code Playgroud)

相反,您可以使用一系列赋值和定义语句:

s = [None]

def f(x, y):
    return x + y

s[0] = f
Run Code Online (Sandbox Code Playgroud)

作为替代方案,您还可以将lambda表达式直接存储在列表中:

s = [lambda x,y : x+y]
Run Code Online (Sandbox Code Playgroud)


use*_*ica 9

def f(whatever):
    do_stuff()

l[0] = f
Run Code Online (Sandbox Code Playgroud)

函数定义语法不允许您直接将函数定义到数据结构中,但您可以创建函数,然后将其分配到需要的位置.

  • @SethMMorton:或者只是`l = [f]`如果你控制`l`的创建而不是试图将函数分配到现有的位置,但我认为这会更清楚. (2认同)