Sen inspect.getargspec
kullanarak böyle bir şey yapabileceğini: Yukarıdaki irade gibi bir şey ile başarısız sefil olduğunu
import inspect
def func (k = lambda x: x ** 2):
if not callable(k) or len(inspect.getargspec(k).args) != 1:
raise TypeError('k must take exactly one argument.')
# Do whatever you want
Not (bu olmamalı iken):
func (lambda x, y = 8: x + y)
... bu durumda, bu davayı ele almak isterseniz biraz daha karmaşık bir şeye ihtiyacınız olacak:
import inspect
def func (k = lambda x: x ** 2):
if not callable(k):
raise TypeError('k must be callable.')
argspec = inspect.getfullargspec(k)
nargs = len(argspec.args)
ndeft = 0 if argspec.defaults is None else len(argspec.defaults)
if nargs != ndeft + 1:
raise TypeError('k must be callable with one argument.')
# Do whatever you want
Neden bir argüman olarak bir lamda alıyorsunuz? Ayrıca sorunuzda ne var geçerli python değil –
Ayrıca yeterince args ile lambda arayarak hata sadece –