Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จะเรียกใช้ฟังก์ชันของโมดูลจากสตริงที่มีชื่อฟังก์ชันใน Python ได้อย่างไร


ออบเจ็กต์ใน python มีตัวแปรและเมธอดของอินสแตนซ์เป็นแอตทริบิวต์ ในการเรียกใช้ฟังก์ชันของโมดูลจากสตริงที่มีชื่อฟังก์ชันเป็น Python คุณจะได้รับแอตทริบิวต์นี้ก่อนแล้วจึงเรียกฟังก์ชันที่แนบมากับฟังก์ชัน ตัวอย่างเช่น สมมติว่าฉันมีโมดูล foo และฉันมีสตริงที่มีเนื้อหาเป็น "bar" วิธีที่ดีที่สุดในการโทร foo.bar() คือ:

>>> import foo
>>> method_to_call = getattr(foo, 'bar')
>>> result = method_to_call()

หากคุณมีฟังก์ชันในเนมสเปซส่วนกลางหรือโลคัลโดยไม่มีส่วนนำหน้าของโมดูล คุณสามารถใช้ globals()/locals() ได้ locals ส่งคืนพจนานุกรมพร้อมตารางสัญลักษณ์ท้องถิ่นปัจจุบัน globals ส่งคืนพจนานุกรมที่มีตารางสัญลักษณ์ส่วนกลาง

ตัวอย่าง

>>> result = locals()["myfunction"]()
or
>>> result = globals()["myfunction"]()