Pertimbangkan senario berikut: anda mempunyai fungsi yang memerlukan nama pembolehubah sebagai argumen untuk melakukan beberapa operasi berdasarkan nama itu. Adakah terdapat cara untuk mendapatkan nama pembolehubah asal dalam fungsi?
Untuk menjawab soalan ini, mari kita teroka kaedah menggunakan modul periksa yang membolehkan anda mendapatkan semula konteks panggilan dan mengekstrak nama pembolehubah daripada konteks kod .
<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>
Penjelasan:
Contoh Output:
['e', '1000', 'c']
Nota: Pendekatan ini melibatkan pemeriksaan timbunan panggilan dan mentafsir konteks kod sumber, yang rapuh dan terdedah kepada ralat. Ia tidak disyorkan untuk kegunaan praktikal dan hanya boleh dipertimbangkan untuk tujuan akademik atau hiburan.
Atas ialah kandungan terperinci Bolehkah Anda Mengekstrak Nama Pembolehubah Asal daripada Argumen Fungsi dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!