【问题标题】:How to pass multiple arguments in a cleaner way in python如何在python中以更简洁的方式传递多个参数
【发布时间】:2020-02-05 19:39:45
【问题描述】:

我有以下代码,我想知道是否有更简洁的版本来执行以下操作。该函数基本上接受一些数据字典并对其进行解析,对其进行操作,构造另一个字典,最后将一些初始数据值与构造的字典一起发送到另一个函数以存储在数据库中。

谁能帮我把这个结构改得更好?

def process_metadata(data):

    # extract data fields 

    # here result constructs another metadata from some of the above values

    result = {
                            "identifier": _id,
                            "type": ["t1", "t2", "t3", t4],
                            "properties": {
                                "p1": v1,
                                "p2": v2,
                                "p3": v3,
                                "p4": v4,
                                "p5": v5,
                                "p6": v6,
                                "p7": v7,
                                "p8": v8,
                                "p9": "v9",
                                "p10": v10,
                                "p11": v11,
                                "p12": v12,
                                "p13": v13,
                                "p14": v14,
                                "p15": v15,
                                "p16": v16,
                                "p17": v17,
                                "p18": v18,
                                "p19": "v19",
                                "p20": v20,
                                "p21": v21,
                                "p22": "v22",
                                "p23": "v23",
                                "p24": v24,
                                "p25": v25,
                                "p26": v26,
                                "p27": v27,
                                "p28": v28,
                                "p29": v29,
                                "p30": v30,
                                "p31": v31,
                                "p32": v32,
                                "p33": v33,
                                "p34": v34,
                                "p35": v35,
                                "p36": "v36",
                                "p37": v37
                            }
                        }
    return another_function(data, result)

【问题讨论】:

  • 您是否尝试将它们作为关键字参数传递给函数?您始终可以执行 **data 将字典解压缩为关键字-参数对。否则,我不确定仅将字典作为单个参数传递可以使“更干净”多少,我对数据字典也这样做。
  • @Atihska for properties 在range(1,37,1) of variables 中使用循环
  • 你不喜欢它什么?有很多键/属性需要在某处定义

标签: python coding-style


【解决方案1】:

您可以只使用 v1-v37 中的构造函数将属性创建一个类并将实例化的属性对象存储在结果中,然后您的结果将包含三个字段,您可以通过 result["properties"].v32 访问您的属性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    相关资源
    最近更新 更多