如何看待Python中加入static typing?
在twiter上关注蟒爹(Guido van Rossum)的.
蟒爹好像最近一直在搞static typing.
http://pan.baidu.com/s/1cFROXS (最近的一个ppt)
blog上也突然多了http://neopythonic.blogspot.com/
回复内容:
不是为了 linter 做的 annotation 么 2016年5月31日更新,Guido对于解决循环引用的方法if False: from a import A class B: def compare(self, a: 'A')
然而对于python一大堆弱接口(不使用继承而是实现函数就算实现接口),并没有什么卵用,还是得用hasattr和assert。 这么说吧,目前已采用的PEP中,只有484说你该如何做类型标注,却没有任何一条PEP提及解释器将如何做类型检查,因为现在的解释器就是很单纯的不做类型检查。
蟒爹折腾了好久的mypy以及此次PyCon上表示说要把类型检查机制(不是type hint)提到PEP去。当然,纳入之后谁来管、如何实现、会不会有所改动,目前尚未可知。虽然py作为纯粹的解释型动态类型语言,不会给你真折腾个编译期来满足静态类型检查的要求,但是至少之后的某个版本Py中可能会给你真正统一的类型检查方式,可能是装饰器,可能是运行参数,但不管怎么样,不再是满世界assert。(甚至还捞出来个重载装饰器……)
这有何意义?一来写着方便了,不再需要你对每个参数都来个assert来保证类型可用;二来虽然没有编译期,但做做test还是不错的;此外还有JIT,pypy表示标注没卵用,因为标注并不能真正起到限制作用,但若有统一标准限制方法,起码就不再是没卵用了,可以看看Pyston(Pyjion不太了解)还是希望能够有这么个类型检查的。
当然,这个类型检查不会像Java/C/C++那样堪当重任,能在执行前给你保证没有类型错误(说到底以上语言照样不能给你搞定如溢出越界之类的运行时错误),说到底还是压根没有编译期。我TS用的不多,只上手写过几个小玩意,不知贵TS在编译为js过程中的类型检查究竟强大到何种地步,是不是连导入个原生js写的玩意它也能给配上类型检查,若是能,为何py不可以?若是不能,提入标准来鼓励社区进行转化难道不是个合理有效的办法?
——————————说早就有了的人一定看都没看那个ppt……
——————————
人家说的不是484弱爆了的hint,而是说在hint的基础之上实现真正的类型检查,在运行时进行限制,以及在非运行时进行推导,不是那个拿来当lint的玩意儿。
人家不是说的type sig,而是解释器级的static type,对,就是你们念叨的TypeScript式的类型检查机制。
貌似已经提交新的pep了(pep index里貌似没找到…)。不过放到pep里,就不一定是蟒爹说了算了……
———————————
可以看到的milestone是不错的,之后的提及更快的检查机制等都还值得期待,尽管目前用cpython仍就需要自己包个装饰器之类来实现检查。
TS的类型检查是在编译时,同样直观TS部分,不鸟非TS部分;如果Py的Static type特性有朝一日可以真并入CPython从解释器角度加入,首先至少能给JIT提供足够的便利。
唯一的问题只剩下,其实绝大多数Py模块都没有做过类型检查……
——————
喜大普奔!喜闻乐见!
然而蟒爹也管不住神一样不正常的PSF,啥时候能用上那只有天知道了。
等弄完静态类型,咱大概终于可以考虑一下把JIT纳入官养CPython了? 当然好,最近写惯了swift,已经离不开静态类型了 关注mypy的时候觉得走错了路,类型推导不应该走解释器兼容的路,不然搞得hinting的语法很诡异,而且用的时候也会因为解释器的原因出现一些问题。
我觉得应该走typescript那样预编译产生无类型代码的路,既然官方也认为不应该在运行时加入类型限制,那么typing就不用考虑语法上兼容 我当然是资呲!
最近在移植一个python写的MYO开源协议到c++上,里面的类型乱的我都想*#&。
以及,struct 的pack unpack真好用,真良心,很大程度上说明了类型,但是移植到cpp还是要靠人肉。
最后,感谢std::function,std::bind,brace-initialization ,typedef,using,auto,shared_ptr做的一些微小的工作,1000行的python移植到c++竟然才1500行。 那些个时髦语言不过是暂时裸体而已,等把程序员勾引到手了,最后会把脱掉的衣服一件件穿回去 喜闻乐见,代码更好读了。。。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Le code d'état HTTP 520 signifie que le serveur a rencontré une erreur inconnue lors du traitement de la demande et ne peut pas fournir d'informations plus spécifiques. Utilisé pour indiquer qu'une erreur inconnue s'est produite lorsque le serveur traitait la demande, ce qui peut être dû à des problèmes de configuration du serveur, à des problèmes de réseau ou à d'autres raisons inconnues. Cela est généralement dû à des problèmes de configuration du serveur, des problèmes de réseau, une surcharge du serveur ou des erreurs de codage. Si vous rencontrez une erreur de code d'état 520, il est préférable de contacter l'administrateur du site Web ou l'équipe d'assistance technique pour plus d'informations et d'assistance.

Pour en savoir plus sur l'open source, veuillez visiter : 51CTO Hongmeng Developer Community https://ost.51cto.com Environnement d'exploitation DAYU200 : 4.0.10.16SDK : 4.0.10.15IDE : 4.0.600 1. Pour créer une application, cliquez sur Fichier- >nouveauFichier->CréerProgect. Sélectionnez le modèle : [OpenHarmony] EmptyAbility : indiquez le nom du projet, shici, le nom du package d'application com.nut.shici et l'emplacement de stockage de l'application XXX (pas de chinois, de caractères spéciaux ou d'espaces). CompileSDK10, modèle : étape. Appareil

Comprendre la signification du code d'état HTTP 301 : scénarios d'application courants de redirection de pages Web Avec le développement rapide d'Internet, les exigences des utilisateurs en matière d'interaction avec les pages Web sont de plus en plus élevées. Dans le domaine de la conception Web, la redirection de pages Web est une technologie courante et importante, mise en œuvre via le code d'état HTTP 301. Cet article explorera la signification du code d'état HTTP 301 et les scénarios d'application courants dans la redirection de pages Web. Le code d'état HTTP 301 fait référence à une redirection permanente (PermanentRedirect). Lorsque le serveur reçoit le message du client

Comment utiliser NginxProxyManager pour implémenter le saut automatique de HTTP à HTTPS Avec le développement d'Internet, de plus en plus de sites Web commencent à utiliser le protocole HTTPS pour crypter la transmission des données afin d'améliorer la sécurité des données et la protection de la vie privée des utilisateurs. Le protocole HTTPS nécessitant la prise en charge d'un certificat SSL, un certain support technique est requis lors du déploiement du protocole HTTPS. Nginx est un serveur HTTP et un serveur proxy inverse puissants et couramment utilisés, et NginxProxy

Le code d'état HTTP 403 signifie que le serveur a rejeté la demande du client. La solution au code d'état http 403 est la suivante : 1. Vérifiez les informations d'authentification. Si le serveur requiert une authentification, assurez-vous que les informations d'identification correctes sont fournies ; 2. Vérifiez les restrictions d'adresse IP. Si le serveur a restreint l'adresse IP, assurez-vous que les informations d'identification sont correctes. l'adresse IP du client est restreinte. Sur liste blanche ou non sur liste noire ; 3. Vérifiez les paramètres d'autorisation du fichier. Si le code d'état 403 est lié aux paramètres d'autorisation du fichier ou du répertoire, assurez-vous que le client dispose des autorisations suffisantes pour accéder à ces fichiers ou répertoires. etc.

Application rapide : analyse de cas de développement pratique de PHP Téléchargement HTTP asynchrone de plusieurs fichiers Avec le développement d'Internet, la fonction de téléchargement de fichiers est devenue l'un des besoins fondamentaux de nombreux sites Web et applications. Pour les scénarios dans lesquels plusieurs fichiers doivent être téléchargés en même temps, la méthode de téléchargement synchrone traditionnelle est souvent inefficace et prend du temps. Pour cette raison, utiliser PHP pour télécharger plusieurs fichiers de manière asynchrone via HTTP est devenu une solution de plus en plus courante. Cet article analysera en détail comment utiliser le HTTP asynchrone PHP à travers un cas de développement réel.

Solution : 1. Vérifiez le type de contenu dans l'en-tête de la requête ; 2. Vérifiez le format des données dans le corps de la requête ; 3. Utilisez le format de codage approprié. 4. Utilisez la méthode de requête appropriée ;

Problèmes courants de communication réseau et de sécurité et solutions en C# À l'ère d'Internet d'aujourd'hui, la communication réseau est devenue un élément indispensable du développement logiciel. En C#, nous rencontrons généralement certains problèmes de communication réseau, tels que la sécurité de la transmission des données, la stabilité de la connexion réseau, etc. Cet article abordera en détail les problèmes courants de communication réseau et de sécurité en C# et fournira les solutions correspondantes et des exemples de code. 1. Problèmes de communication réseau Interruption de la connexion réseau : pendant le processus de communication réseau, la connexion réseau peut être interrompue, ce qui peut entraîner
