Python bir işlevi alır anahtar kelime argümanlar sayabilir misiniz?
Anahtar kelime argümanlar örneğin.... gibi anahtar/değer geçmek için ihtiyacım olan bir dict var
d_args = {'kw1': 'value1', 'kw2': 'value2'}
example(**d_args)
Bu iyi çalışıyoramaeğer example
işlevi tarafından kabul edilmeyen d_args, dict değerleri varsa, örneğin, eğer fonksiyonu def example(kw2):
olarak tanımlanan belli ki.. Demek ölür
Bu bir sorun beri bilmiyorum kontrol de nesil d_args
example
fonksiyon.. ikisi de gelip, dış modülleri ve example
sadece kabul bazı anahtar kelime argümanlar gelen dict..
İdeal sadece yaparım
parsed_kwargs = feedparser.parse(the_url)
valid_kwargs = get_valid_kwargs(parsed_kwargs, valid_for = PyRSS2Gen.RSS2)
PyRSS2Gen.RSS2(**valid_kwargs)
Muhtemelen dict, anahtar kelime argümanlar, ama merak ettim: geçerli bir liste filtreProgramlama yoluyla listesine bir şekilde anahtar kelime argümanlar belirli bir fonksiyon alır var mı?
CEVAP
Kodu doğrudan nesne teftiş ve değişken çalışma dışarı daha iyi kullanmak için modülü kontrol edin.
>>> import inspect
>>> def func(a,b,c=42, *args, **kwargs): pass
>>> inspect.getargspec(func)
(['a', 'b', 'c'], 'args', 'kwargs', (42,))
Eğer argüman olarak belirli bir dizi ile çağrılabilir bilmek istiyorsanız, varsayılan belli olmadan argümanlar gerekir. Bu var olabilir.
def getRequiredArgs(func):
args, varargs, varkw, defaults = inspect.getargspec(func)
if defaults:
args = args[:-len(defaults)]
return args # *args and **kwargs are not required, so ignore them.
O zaman belli bir dict eksik ne anlatacak bir fonksiyonudur:
def missingArgs(func, argdict):
return set(getRequiredArgs(func)).difference(argdict)
Benzer şekilde, geçersiz bir argüman olarak denetlemek için kullanın:
def invalidArgs(func, argdict):
args, varargs, varkw, defaults = inspect.getargspec(func)
if varkw: return set() # All accepted
return set(argdict) - set(args)
Ve eğer öyleyse çağrılabilir ise tam bir test
def isCallableWithArgs(func, argdict):
return not missingArgs(func, argdict) and not invalidArgs(func, argdict)
(Bu kadar python'un arg ayrıştırma olarak sadece iyidir. Kwargs geçersiz değerler için herhangi bir çalışma zamanı denetimleri açıkça tespit edilemez.)
Python normal tartışmalar vs. anahtar ...
Değişken uzunlukta konumsal tartıştıkt...
Verim anahtar kelime Python ne yapar?...
Geçen anahtar kelime python parametre ...
Kullanımı "genel" Python ana...