Il punto del polimorfismo è che se si scrive una funzione di regressione per, per esempio, i tipi numerici incorporati di Python, qualcun altro può usarlo con NumPy o qualche altra libreria numerica e non pensarci. Non devi nemmeno sapere dell'esistenza di tali librerie per essere sicuro di scrivere correttamente il tuo codice. Basta usare le strutture del linguaggio naturale e lasciarlo a chiunque crei la prossima grande libreria numerica per assicurarti che i loro tipi numerici possano essere usati normalmente, le loro liste e sequenze possono essere iterate da for
loops, ecc.
Spezzare il polimorfismo per difendersi da codifiche scadenti o per far rispettare un certo uso del tuo grimorio non ti fa guadagnare nulla. Ma potrebbe limitare i futuri utenti del tuo codice senza una buona ragione.
I was wondering if there is something I am missing here
Non mancano nulla, ma forse complicazioni eccessive. Scrivi una funzione che prende gli argomenti che desideri e la documenta di conseguenza. Questo è tutto.
I don't want to try and run a regression on a string or something
Né tu né nessun altro dovresti passare una stringa in una funzione di regressione. Chi lo farebbe? Il codice non dovrebbe fare nulla per caso - se lo è, stai solo programmando per ipotesi, che è destinato a fallire in qualsiasi lingua.
is type checking philosophically okay in this case.
La risposta a questo è quasi sempre no.
La filosofia generale di Python è che tu pensi che le altre persone che usano il tuo codice saranno sensate su di esso - perché se non lo sono, c'è davvero niente che ti aiuterà. Nessun tipo di sistema, nessun controllo, nessuna funzionalità linguistica incorporata può difendersi da qualcuno schiacciando il loro volto sulla tastiera e chiamando la funzione con il risultato.
Il motivo principale è questo: Python è progettato per scrivere codice conciso, espressivo, leggibile con un minimo di testo standard. Se aggiungi te stesso manualmente tutta la caldaia, stai sconfiggendo il punto. Quindi rilassati e usa la lingua per esprimere le tue idee nel modo più preciso possibile:)