Python中通过字典定义变量名后如何将对应变量作为函数返回值
问题根源
- 返回值写法语法错误,Python返回多个值需要用逗号分隔
- 函数内部通过
vars()动态生成的变量无法直接作为局部变量访问,Python预编译函数时会提前确定局部变量列表,动态新增的变量不在列表内,因此封装成函数后无法正常访问
优化实现
不需要新增额外的if/elif判断,直接新增一个结果字典存储读取到的参数即可,同时兼容后续新增配置项,修改后的代码如下:
def read_env_inputs(envFilename): env_dict = {'File Title': 'filename', 'Number of Objects': 'Ns', 'Object Size': 'sd'} # 结果字典存储所有读取到的参数 result = {} with open(envFilename) as f: lines = f.readlines() for line in lines: line = line.split(':', 1) # 加1避免value里包含冒号时拆分错误 if line[0] in env_dict: var_name = env_dict[line[0]] value_part = line[1].split('#')[0].strip() if line[0] == 'File Title': result[var_name] = value_part else: value_list = value_part.split(',') if len(value_list) == 1: result[var_name] = float(value_part) else: result[var_name] = list(map(float, value_list)) # 两种返回方式选其一即可 # 方式1:直接返回字典,调用时通过key访问参数,后续新增配置不需要修改返回逻辑 # return result # 方式2:返回多变量,调用时可以直接接多个变量名 return result['filename'], result['Ns'], result['sd']
调用示例
如果使用方式1返回字典:
params = read_env_inputs("你的文件路径.txt") print(params['filename']) print(params['Ns']) print(params['sd'])
如果使用方式2返回多变量:
filename, Ns, sd = read_env_inputs("你的文件路径.txt") # 直接使用变量即可
内容的提问来源于stack exchange,提问作者dougl122
相关产品推荐
相关产品推荐

