You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何基于参数动态生成指定格式的可执行语句?

问题描述

我希望根据不同的参数/场景动态生成语句,并将生成的语句用于后续方法调用。预期生成的语句如下:

  • case 1: fd['stunumber'], ' ', ' ', fd['stujoindate'], fd['percentage']
  • case 2: fd['empnumber'], fd['empjoindate'], fd['salary'], fd['exp']

以下是我编写的代码:

def adder(*obj_field):
  stmt = ''
  for field in obj_field: 
    stmt =','.join('fd['+field+']')
  
  print(stmt)
  
adder('stunumber', ' ', ' ', 'stujoindate', 'percentage')
adder('empnumber', 'empjoindate', 'salary','exp')

请问如何修改代码以得到上述预期的语句?


解决方案

你的代码存在两处关键问题:

  1. 每次循环调用','.join('fd['+field+']')都会覆盖之前的结果,最终只保留最后一个字段的处理值
  2. 没有区分字段名和空格这类直接字符串,统一处理成fd['xxx']会导致空格变成fd[' '],不符合预期

修改后的代码如下:

def adder(*obj_field):
    parts = []
    for item in obj_field:
        # 处理空格类直接字符串,其余字段格式化为fd['字段名']
        if item == ' ':
            parts.append("' '")
        else:
            parts.append(f"fd['{item}']")
    # 用逗号加空格拼接所有片段
    stmt = ', '.join(parts)
    print(stmt)

adder('stunumber', ' ', ' ', 'stujoindate', 'percentage')
adder('empnumber', 'empjoindate', 'salary','exp')

说明

  • 使用列表parts存储每个处理后的片段,比循环中直接拼接字符串更高效且不易出错
  • 针对空格参数直接添加' '到列表,字段名则通过f-string格式化为目标格式
  • 最后用, 连接所有片段,生成符合要求的完整语句

运行后输出结果:

fd['stunumber'], ' ', ' ', fd['stujoindate'], fd['percentage']
fd['empnumber'], fd['empjoindate'], fd['salary'], fd['exp']

内容的提问来源于stack exchange,提问作者RSG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 12:05:10