Bolehkah Anda Mengekstrak Nama Pembolehubah Asal daripada Argumen Fungsi dalam Python?

Susan Sarandon
Lepaskan: 2024-10-30 12:34:03
asal
411 orang telah melayarinya

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

Cara Mengekstrak Nama Pembolehubah Asal daripada Argumen yang Diteruskan kepada Fungsi

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>
Salin selepas log masuk

Penjelasan:

  1. inspect.currentframe() mengambil bingkai tindanan bagi fungsi semasa, iaitu foo() dalam kes ini.
  2. inspect.getouterframes() menavigasi satu tahap ke atas dalam konteks panggilan untuk mendapatkan bingkai fungsi panggilan, main().
  3. inspect.getframeinfo() mendapatkan semula maklumat konteks kod untuk bingkai yang diperolehi.
  4. Kami mengasingkan senarai argumen dengan menghuraikan konteks kod, dan kemudian mengekstrak nama argumen, mengambil kira kedua-dua argumen kedudukan dan kata kunci.
  5. Akhir sekali, senarai pembolehubah asal nama dicetak.

Contoh Output:

['e', '1000', 'c']
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!