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')
请问如何修改代码以得到上述预期的语句?
解决方案
你的代码存在两处关键问题:
- 每次循环调用
','.join('fd['+field+']')都会覆盖之前的结果,最终只保留最后一个字段的处理值 - 没有区分字段名和空格这类直接字符串,统一处理成
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
相关产品推荐
相关产品推荐

