如何修改循环以调用含两个及以上参数的Python函数?
解决方法
根据你的需求,分几种常见场景修改循环即可:
场景1:所有DataFrame共用同一个arg2参数
如果arg2是固定值,直接在调用函数时传入,原有循环结构基本不用改:
def Routine(arg1, arg2): # 实现逻辑 pass # 固定的arg2参数值 fixed_arg2 = "你的固定参数内容" # 遍历DataFrame并调用函数 for df in [df_AAPL, df_AMD, df_AMZN]: Routine(df, fixed_arg2) # 如果需要用到索引idx,保留enumerate即可 for idx, df in enumerate([df_AAPL, df_AMD, df_AMZN]): Routine(df, fixed_arg2)
场景2:每个DataFrame对应不同的arg2参数
如果每个DataFrame需要搭配专属的arg2,把DataFrame和对应参数打包成元组,放在列表里遍历:
def Routine(arg1, arg2): # 实现逻辑 pass # 将DataFrame与对应arg2配对成元组 df_param_pairs = [ (df_AAPL, "AAPL专属参数"), (df_AMD, "AMD专属参数"), (df_AMZN, "AMZN专属参数") ] # 遍历配对列表调用函数 for df, arg2 in df_param_pairs: Routine(df, arg2) # 需要索引时用enumerate包裹 for idx, (df, arg2) in enumerate(df_param_pairs): Routine(df, arg2)
扩展:支持更多参数
如果后续要添加arg3、arg4等参数,只需扩展元组内容,或用参数解包的方式更灵活:
def Routine(arg1, arg2, arg3, arg4): # 实现逻辑 pass # 打包多组参数 df_multi_params = [ (df_AAPL, "AAPL_arg2", 100, True), (df_AMD, "AMD_arg2", 200, False), (df_AMZN, "AMZN_arg2", 300, True) ] # 解包参数调用函数 for params in df_multi_params: Routine(*params)
注意:函数定义行末尾要加冒号
:,你原来的代码里漏写了,会导致语法错误。
内容的提问来源于stack exchange,提问作者GhettoCoder
相关产品推荐
相关产品推荐

