【问题标题】:Access default function argument values by name/identifier按名称/标识符访问默认函数参数值
【发布时间】:2020-07-21 01:30:37
【问题描述】:

考虑以下简化示例:

def f(string, offset=0):
    print(string[offset:] if isinstance(offset, int) else string[f.__defaults__[0]:])

f('Hello', 'two')

虽然f.__defaults__ 返回的元组可以按各自的顺序访问所有默认参数值(即按位置),但我想知道是否有办法按名称访问它们/identifier 来自函数内部的参数(此处为:'offset')...

【问题讨论】:

  • 如果你在这里控制代码,你可以使用你设置的默认值:... else string[0:]
  • @schwobaseggl 我认为这里的想法是应用DRY 原则。想象一下,必须在代码中搜索和修改 10 个使用默认值 offset 的位置,而稍后如果您在每个位置硬编码 0,则必须更改默认值。
  • @blhsing 这是有道理的。另一方面:这将由其他代码调用。传递错误类型的参数不是我会沉默的错误,而是想知道以便我可以修复它。

标签: python function default-value


【解决方案1】:

你可以使用inspect.signature来获取给定函数的参数,从中可以得到命名参数的默认值:

import inspect

def f(string, offset=0):
    print(string[offset:] if isinstance(offset, int) else string[f_params['offset'].default:])

f_params = inspect.signature(f).parameters

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    相关资源
    最近更新 更多