考虑以下场景:您有一个函数需要变量名称作为参数根据该名称执行一些操作。有没有办法获取函数内的原始变量名称?
为了回答这个问题,让我们探索一种利用检查模块的方法,该方法允许您检索调用上下文并从代码上下文中提取变量名称.
<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>
说明:
示例输出:
['e', '1000', 'c']
注意: 这种方法涉及检查调用堆栈并解释源代码上下文脆弱且容易出错。不建议实际使用,仅应考虑用于学术或娱乐目的。
以上是你能从Python中的函数参数中提取原始变量名吗?的详细内容。更多信息请关注PHP中文网其他相关文章!