有一个返回列表的函数:
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
我的理解是,调用指令中指定的索引访问发生在函数返回结果列表之后,但也许会有一种方法(最好是直接的方法),函数可以从调用中获取此调用格式信息指令,无需通过附加函数参数手动指定。
你无法以任何合理的方式做到这一点。在函数返回结果之前,索引指令无法开始。
要实现与此类似的结果,最好的方法是让
func1
实际上是一个类,它存储其参数而不执行任何工作,直到__getitem__
或__repr__
/__str__
或任何调用要求它做一些工作。在特定情况下,这可能是性能的改进,只是代码更复杂。