ฟังก์ชันในโมดูลนี้ให้ข้อมูลที่เป็นประโยชน์เกี่ยวกับอ็อบเจ็กต์ที่ใช้งานอยู่ เช่น โมดูล คลาส เมธอด ฟังก์ชัน อ็อบเจกต์โค้ด ฯลฯ ฟังก์ชันเหล่านี้ดำเนินการตรวจสอบประเภท เรียกซอร์สโค้ด ตรวจสอบคลาสและฟังก์ชัน และตรวจสอบสแต็กของตัวแปล
getmembers()− ฟังก์ชันนี้ส่งคืนสมาชิกทั้งหมดของอ็อบเจ็กต์ในรายการชื่อ คู่ค่าเรียงตามชื่อ หากระบุเพรดิเคตทางเลือก จะรวมเฉพาะสมาชิกที่เพรดิเคตคืนค่าจริงเท่านั้นที่จะถูกรวม getmodulename() ฟังก์ชันนี้จะคืนค่าชื่อของโมดูลที่ตั้งชื่อตามพาธของไฟล์ โดยไม่รวมถึงชื่อของแพ็คเกจที่ล้อมรอบ
เราจะใช้สคริปต์ต่อไปนี้เพื่อทำความเข้าใจพฤติกรรมของโมดูลการตรวจสอบ
#inspect-example.py'''This is module docstring'''def hello():'''hello docstring''' print ('Hello world') return#class definitionsclass parent:'''parent docstring' ''' def __init__ (ตัวเอง):self.var='hello' def สวัสดี (ตัวเอง):พิมพ์ (self.var) ลูกคลาส (แม่):def สวัสดี (ตัวเอง):'' 'ฟังก์ชันสวัสดีถูกแทนที่''' ซุปเปอร์ ().hello() พิมพ์ ("สบายดีไหม?")
ขึ้นต้นด้วย '__'
>>> นำเข้าตรวจสอบ, inspect_example>>> สำหรับ k,v ในการตรวจสอบ.getmembers(inspect_example):ถ้า k.startswith('__')==False:print (k,v)childhelloparent>>>ก่อน>ภาคแสดง
เพรดิเคตเป็นเงื่อนไขตรรกะที่ใช้กับฟังก์ชันในโมดูลการตรวจสอบ ตัวอย่างเช่น ฟังก์ชัน getmembers() จะคืนค่ารายการสมาชิกของโมดูลที่เงื่อนไขเพรดิเคตให้ไว้เป็นจริง เพรดิเคตต่อไปนี้ถูกกำหนดในโมดูลการตรวจสอบ
ismodule() | คืนค่า จริง หากวัตถุเป็นโมดูล |
isclass() | คืนค่า จริง หากอ็อบเจ็กต์เป็นคลาส ไม่ว่าจะสร้างขึ้นในหรือสร้างด้วยโค้ด Python |
ismethod() | คืนค่า จริง หากวัตถุเป็นเมธอดที่ถูกผูกไว้ซึ่งเขียนด้วยภาษา Python |
isfunction() | คืนค่า จริง หากวัตถุนั้นเป็นฟังก์ชัน Python ซึ่งรวมถึงฟังก์ชันที่สร้างโดยนิพจน์แลมบ์ดา |
isgenerator() | คืนค่า จริง หากวัตถุเป็นตัวสร้าง |
iscode() | คืนค่า จริง หากวัตถุเป็นรหัส |
isbuiltin() | คืนค่า จริง หากอ็อบเจ็กต์เป็นฟังก์ชันในตัวหรือเมธอดในตัวที่ถูกผูกไว้ |
isabstract() | คืนค่า จริง หากวัตถุเป็นคลาสพื้นฐานที่เป็นนามธรรม |
ที่นี่จะส่งกลับเฉพาะสมาชิกชั้นเรียนในโมดูลเท่านั้น
>>> สำหรับ k,v ใน inspect.getmembers(inspect_example, inspect.isclass):print (k,v)childparent >>>
ในการดึงสมาชิกของคลาส 'ลูก' ที่ระบุ -
>>> inspect.getmembers(inspect_example.child)>>> x=inspect_example.child()>>> inspect.getmembers(x)
ฟังก์ชัน getdoc() ดึง docstring ของโมดูล คลาส หรือฟังก์ชัน
>>> inspect.getdoc(inspect_example)'This is module docstring'>>> inspect.getdoc(inspect_example.parent)'parent docstring'>>>check.getdoc(inspect_example.hello)'hello docstring' ก่อน>ฟังก์ชัน getsource() ดึงโค้ดคำจำกัดความของฟังก์ชัน -
>>>> พิมพ์ (inspect.getsource(inspect_example.hello))def สวัสดี ():'''hello docstring''' พิมพ์ ('สวัสดีชาวโลก') return>>> sign=inspect.signature(inspect_example.parent .hello)>>> พิมพ์ (ลงชื่อ)โมดูลตรวจสอบยังมีอินเทอร์เฟซบรรทัดคำสั่ง
C:\Users\acer>python -m inspect -d inspect_exampleTarget:inspect_exampleOrigin:C:\python36\inspect_example.pyCached:C:\python36\__pycache__\inspect_example.cpython-36.pycLoader:C:\python36\__pycache__\inspect_example.cpython-36.pycLoader:<_frozenx0_imalLoader:>คำสั่งต่อไปนี้จะคืนค่าซอร์สโค้ดของฟังก์ชัน 'Hello()' ในโมดูล
C:\Users\acer>python -m inspect inspect_example:hellodef hello():'''hello docstring''' print ('Hello world') return