繁体   English   中英

如何将整个语句作为函数参数传递? Python

[英]How to pass whole statements as function parameters? python

我有这个dict


dic = {'wow': 77, 'yy': 'gt', 'dwe': {'dwdw': {'fefe': 2006}}}


我有这个功能


def get_missing_key(data, nest, default_value):
    try:
        return data + nest
    except KeyError as err:
        return default_value

这就是我所说的:


get_missing_key(dic, ['dwe']['dwdw']['fefe'], 16)

我想要的是我希望将第二个参数转换为普通的 python 表达式并用它进行计算

我希望它是这样的



def get_missing_key(data, nest, default_value):
    try:
        return data['dwe']['dwdw']['fefe']
    except KeyError as err:
        return default_value

有没有办法实现这一目标?

但是我所拥有的显然不起作用,因为我无法将dictlist

您可以像@kyle-parsons 那样使用 reduce,或者您可以手动循环:

lookup = ["dwe", "dwdw", "fefe"]

def find_missing(data, lookup, default):
    found = data
    for i in lookup:
        try:
            found = found[i]
        except KeyError:
            return default

    return found

您应该将您的密钥作为列表传递。

from functools import reduce

def get_missing_key(data, nest, default_value):
    try:
        reduce(dict.__getitem__, nest, data)
    except KeyError:
        return default_value

一般来说,Python 急切地评估表达式,并且没有办法延迟传递要构建和exec的代码字符串,但这确实不是一个好主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM