在python中,列表括号后面的括号是什么意思

在python中,列表括号后面的括号是什么意思,python,Python,我看到一个问题,他们想让我做一个函数来计算一些形状的面积 下面是示例代码,我只是不明白括号后面的括号起什么作用,以及如何创建一个函数来解决这个问题 代码: 输出: 1 12.566370614359172 8 10.0 可以是许多不同的东西,例如-向函数传递参数的范围: def area_func(arr): return [func1, func2, func3, func4] def func1(x): return '1' def func2(x): retu

我看到一个问题,他们想让我做一个函数来计算一些形状的面积 下面是示例代码,我只是不明白括号后面的括号起什么作用,以及如何创建一个函数来解决这个问题

代码:

输出:

1
12.566370614359172
8
10.0

可以是许多不同的东西,例如-向函数传递参数的范围:

def area_func(arr):
    return [func1, func2, func3, func4]

def func1(x):
    return '1'

def func2(x):
    return '12.566370614359172'

def func3(x, y):
    return '8'

def func4(x, y):
    return '10.0'

ls = area_func(['square', 'circle', 'rectangle', 'triangle'])

print(ls[0](1))
print(ls[1](2))
print(ls[2](2, 4))
print(ls[3](4, 5))

area_func
返回函数列表

然后使用不同的参数调用函数


ls[0]
可能会计算正方形的面积,
ls[1]
用于圆,等等。

根据您的代码,我假设area\u函数返回4个函数,如下所示

def area_func():
  def square(x):
     return  x*x
  # other functions
  return [square,circle, rectangle, triangle]
从下面的代码来看,您似乎在索引0,1,2,3处调用这些函数

print(ls[0](1)) # ls[0] has reference to square function
print(ls[1](2)) # ls[1] has reference to circle function
print(ls[2](2, 4)) #ls[2] has reference to rectangle function
print(ls[3](4, 5)) #ls[3] has reference to triangle function
那么,我们应该做什么呢

ls[0](1)
相当于

square(1)

area func可能会根据给定的输入生成一个函数列表,因此使用
['circle','square']
调用它应该返回一个仅包含这两个函数的列表,以指定的顺序?为此,您可能希望有一个函数字典,如下所示:

def area_func(func_list):
    def square(x): 
    def circle(r):
    def rectangle(h, w):
    def triangle(h, b):
 
    funcs = {'square':square, 'circle':circle, 'rectangle':rectangle,   
             'triangle':triangle}                              

    return [funcs.get(x) for x in func_list if funcs.get(x) is not None]  #avoids KeyError

函数字典是做这类事情的常用方法。

什么是
area\u func
?如果它返回一个列表,则括号是下标(其中的值是索引)。如果它返回一个函数,则括号是函数调用脚本(其中的值是传递给该函数的参数)。这意味着
ls
是某种集合,可能是元组或列表。此列表包含可使用参数调用的函数。括号用于索引/键查找,括号表示对象是可调用的完全正确我必须创建返回每个形状公式的函数,并在区域_func的列表中返回函数谢谢
def area_func(func_list):
    def square(x): 
    def circle(r):
    def rectangle(h, w):
    def triangle(h, b):
 
    funcs = {'square':square, 'circle':circle, 'rectangle':rectangle,   
             'triangle':triangle}                              

    return [funcs.get(x) for x in func_list if funcs.get(x) is not None]  #avoids KeyError