检索变量名称参数
将变量作为参数传递给函数时,可能需要访问它们的原始名称。然而,默认情况下,Python 并没有为此提供直接的机制。
破解 Inspect 模块
要获取变量名称,您可以利用 Python 的检查模块,尽管谨慎行事至关重要,因为这种方法可能会导致意外行为。
考虑以下函数:
<code class="python">import inspect def foo(a, f, b): frame = inspect.currentframe() frame = inspect.getouterframes(frame)[1] string = inspect.getframeinfo(frame[0]).code_context[0].strip() args = string[string.find('(') + 1:-1].split(',') names = [] for i in args: if i.find('=') != -1: names.append(i.split('=')[1].strip()) else: names.append(i) print(names) def main(): e = 1 c = 2 foo(e, 1000, b=c) main()</code>
此方法检查当前帧并从外帧检索函数调用字符串。然后,它提取参数列表,其中包括默认参数。通过解析此字符串,您可以获得原始变量名称,如输出所示:
['e', '1000', 'c']
限制和建议
必须注意,使用此实践中不推荐这种方法。它可能会导致不可靠的结果并引入不必要的复杂性。相反,请考虑显式传递变量名称或使用更合适的设计模式来实现您所需的功能。
以上是将参数传递给 Python 函数时如何检索变量名称?的详细内容。更多信息请关注PHP中文网其他相关文章!