调用指令中的索引。函数是否可以检测自身的函数调用指令是否正在使用索引?

问题描述 投票:0回答:1

有一个返回列表的函数:

def func1(list1):
    a = 1
    func1_result = []
    func1_result = list1 * a  # This is just an illustrative example to show the function returns any list.
    return func1_result

并获取函数返回的整个列表:

示例1:

list1_1 = [5, 4, 3, 2, 1]

print(f"{func1(list1_1)}")  # "[5, 4, 3, 2, 1]"

或者还获取函数返回的列表的特定索引的值,使用:

示例2:

list1_1 = [5, 4, 3, 2, 1]

print(f"{func1(list1_1)[0]}")  # "5"

那么,问题是,有没有办法让函数

func1
可以检测调用指令语法/格式是否包含索引部分
[n]
?还有,当包含索引部分
[n]
时,那么如何知道函数调用指令中具体的索引值是什么?

def func1(list1):
    a = 1
    func1_result = []
    
    '''
    if the funcion calling instruction is about getting the whole resulting list:
        do the calculations to get the whole resulting list.
    elif the funcion calling instruction is about getting one specific index value of the resulting list:
        do the calculations to get only the resulting value for the specified index.
        # In this case the result could be a 1-element list.
        # Main goal in these kinds of cases: saving memory during calculations when working with large lists and with many function's calls.
    '''
    
    return func1_result

我的理解是,调用指令中指定的索引访问发生在函数返回结果列表之后,但也许会有一种方法(最好是直接的方法),函数可以从调用中获取此调用格式信息指令,无需通过附加函数参数手动指定。

python function array-indexing
1个回答
0
投票

你无法以任何合理的方式做到这一点。在函数返回结果之前,索引指令无法开始。

要实现与此类似的结果,最好的方法是让

func1
实际上是一个,它存储其参数而不执行任何工作,直到
__getitem__
__repr__
/
__str__
或任何调用要求它做一些工作。在特定情况下,这可能是性能的改进,只是代码更复杂。

© www.soinside.com 2019 - 2024. All rights reserved.