擷取變數名稱參數
將變數作為參數傳遞給函數時,可能需要存取它們的原始名稱。然而,在預設情況下,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中文網其他相關文章!