你能从Python中的函数参数中提取原始变量名吗?

Susan Sarandon
发布: 2024-10-30 12:34:03
原创
411 人浏览过

Can You Extract Original Variable Names from Function Arguments in Python?

如何从传递给函数的参数中提取原始变量名称

考虑以下场景:您有一个函数需要变量名称作为参数根据该名称执行一些操作。有没有办法获取函数内的原始变量名称?

为了回答这个问题,让我们探索一种利用检查模块的方法,该方法允许您检索调用上下文并从代码上下文中提取变量名称.

<code class="python">import inspect

def foo(a, f, b):
    # Get the stack frame of the calling function
    frame = inspect.currentframe()
    
    # Move up one level to get the frame of the calling context
    frame = inspect.getouterframes(frame)[1]

    # Get the source code context of the calling context
    string = inspect.getframeinfo(frame[0]).code_context[0].strip()
    
    # Extract the argument names from the code context
    args = string[string.find('(') + 1:-1].split(',')
    
    names = []
    for i in args:
        if i.find('=') != -1:
            # Handle keyword arguments
            names.append(i.split('=')[1].strip())
        else:
            # Handle positional arguments
            names.append(i)
            
    print(names)

def main():
    e = 1
    c = 2
    foo(e, 1000, b = c)

main()</code>
登录后复制

说明:

  1. inspect.currentframe() 获取当前函数的堆栈帧,在本例中为 foo()。
  2. inspect.getouterframes() 在调用上下文中向上导航一级以获取调用函数 main() 的框架。
  3. inspect.getframeinfo() 检索该函数的代码上下文信息获取框架。
  4. 我们通过解析代码上下文来隔离参数列表,然后提取参数名称,同时考虑位置参数和关键字参数。
  5. 最后,原始变量列表打印出名称。

示例输出:

['e', '1000', 'c']
登录后复制

注意: 这种方法涉及检查调用堆栈并解释源代码上下文脆弱且容易出错。不建议实际使用,仅应考虑用于学术或娱乐目的。

以上是你能从Python中的函数参数中提取原始变量名吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!