Kwargs eşlemesinde tamsayıları alabilen bir Python işlevi uygulayabilir misiniz?
Hayır, yapamazsınız. Python değerlendirme döngüsü, Python kodunda tanımlanan arama işlevlerini, C kodunda tanımlanan bir çağrılabilir nesneyi çağırmaktan farklı şekilde işler. Anahtar kelime bağımsız değişkenini işleyen Python değerlendirme döngüsü kodu, dize olmayan anahtar kelime argümanlarındaki kapıyı sıkı bir şekilde kapatmıştır.
Ancak SimpleNamespace
, bir Python tanımlı callable değil, entirely in C code olarak tanımlanmıştır. Herhangi bir doğrulama olmadan doğrudan anahtar kelime argümanlarını kabul eder, bu yüzden dize olmayan anahtar kelime argümanlarıyla bir sözlükte geçiş yapabilirsiniz.
Bu belki bir hatadır; Hepsi dizgi dışı anahtar kelime argümanlarına karşı korunan C-API argument parsing functions'u kullanmanız gerekir. Ancak SimpleNamespace
sadece sys.implementation
data* no'lu nesneler için tasarlanmıştı ve başka kullanımlar için tasarlanmamıştı.
Diğer istisnalar olabilir, ancak hepsi Python işlevleri değil, C tanımlı callables olacaktır.
* da SimpleNamespace
sınıfının bir örneği çalışır time.get_clock_info()
method; Bu, şu anda kullanılan tek diğer yerdir.
Daha önemli soru: neden gerekir? –
Yani kısaca: anahtar kelime argümanlarını kabul eden ve kısıtlanmayan bir C-uzantısı türü tanımlayabilirsiniz. Ancak aynı şeyi yapan bir Python işlevi tanımlayamazsınız. –
Başka bir python dağılımı aynı davranışı sergilediyse merak ediyorum ... –