Jawaban yang diterima sebelumnya telah ditinggalkan pada Python 3.0. Alih-alih menggunakan inspect.getargspecAnda sekarang harus memilih Signaturekelas yang menggantikannya.
Membuat tanda tangan untuk fungsi itu mudah melalui signaturefungsi :
from inspect import signature
def someMethod(self, arg1, kwarg1=None):
pass
sig = signature(someMethod)
Sekarang, Anda dapat melihat parameternya dengan cepat dengan strmemasukkannya:
str(sig) # returns: '(self, arg1, kwarg1=None)'
atau Anda juga bisa mendapatkan pemetaan nama atribut ke objek parameter via sig.parameters.
params = sig.parameters
print(params['kwarg1']) # prints: kwarg1=20
Selain itu, Anda dapat menghubungi lendi sig.parametersuntuk juga melihat jumlah argumen fungsi ini membutuhkan:
print(len(params)) # 3
Setiap entri dalam paramspemetaan sebenarnya adalah Parameterobjek yang memiliki atribut lebih lanjut yang membuat hidup Anda lebih mudah. Misalnya, mengambil parameter dan melihat nilai defaultnya sekarang dengan mudah dilakukan dengan:
kwarg1 = params['kwarg1']
kwarg1.default # returns: None
sama untuk sisa benda yang ada di parameters.
Sedangkan untuk 2.xpengguna Python , sementara inspect.getargspec tidak ditinggalkan, bahasa akan segera menjadi :-). The Signaturekelas tidak tersedia di 2.xseri dan tidak akan. Jadi, Anda masih perlu bekerja sama inspect.getargspec.
Adapun transisi antara Python 2 dan 3, jika Anda memiliki kode yang bergantung pada antarmuka getargspecdi Python 2 dan beralih ke signaturedalam 3terlalu sulit, Anda memiliki opsi berharga untuk menggunakan inspect.getfullargspec. Ia menawarkan antarmuka yang mirip dengan getargspec(satu argumen yang bisa dipanggil) untuk mendapatkan argumen dari suatu fungsi sambil juga menangani beberapa kasus tambahan yang getargspectidak:
from inspect import getfullargspec
def someMethod(self, arg1, kwarg1=None):
pass
args = getfullargspec(someMethod)
Seperti halnya getargspec, getfullargspecmengembalikan NamedTupleyang berisi argumen.
print(args)
FullArgSpec(args=['self', 'arg1', 'kwarg1'], varargs=None, varkw=None, defaults=(None,), kwonlyargs=[], kwonlydefaults=None, annotations={})
inspectmodul perpustakaan standar.