For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
Python编程开发语言随着互联网的不断发展而被越来越多的程序员掌握,今天我们就通过案例分析来简单了解一下,Python程序员需要掌握哪些编程知识。
渐变类型:TypeScript
在Python3.5中出现的一个比较有争议的特性是新引入的typing模块,它为Python生态带来了一个支持渐变类型的标准词典。
Python猫注:Gradualtyping是JeremySiek和WalidTaha在2006年提出的理论,允许程序中同时出现动态类型与静态类型。国内有人将其翻译为“渐进类型”、“渐近类型”、“渐进定型”、“动静混合类型”等等,但我觉得并不够好。渐变类型也许是我的创,借鉴自Photoshop的渐变颜色,表达出从动态类型到静态类型的过渡(或者说交融共处的)特点。“渐变”一词有打破界限分明的状态(如大小、远近、明暗),从而达到中和状态的含义。
对于那些主要从C、C++和Java等语言中接触静态类型的人来说,这似乎是一个令人吃惊的糟糕特性(因此引发了争议)。
微软的TypeScript为Javascript程序提供了渐变类型,因此它能更好地解释这个概念。TypeScript代码会被编译成JavaScript代码(然后就不包含运行时类型检查),流行的JavaScript库的TypeScript注解会维护在专用的DefinitelyTyped仓中。
正如ChrisNeugebauer在澳大利亚PyCon演讲中指出的,这很像是Python与typeshed类型提示库、以及像mypy这种类型推断和分析工具之间的关系。
在本质上,TypeScript和Python中的类型提示都是编写特定种类的测试的方式,要么使用单独的文件(就像普通测试一样),要么嵌入在代码体中(就像静态类型语言中的类型声明一样)。对于这两种情况,你都要运行一个单独的命令,来检查其余代码是否与已添加的类型断言一致(对于TypeScript,这是在编译成JavaScript时隐式地发生的;对于Python的类型提示,这是一个完全可选的静态分析任务)。
动态元编程:Hy、Ruby
C、C++、C#和Java等语言的学习者在接触Python时,经常感到不安的一个特性是“代码即数据”(codeisdata):函数和类之类的东西是运行时对象,可以像其它对象一样被操纵。
Hy是一种Lisp方言,可以同时在CPythonVM和PyPyVM上运行。Lisp及其方言将“代码即数据”的概念推到了极致,因为Lisp代码由嵌套列表组成,这些列表描述了要执行的操作(这门语言的名称本身就代表列表处理器“LIStProcessor”)。Lisp风格语言的强大之处在于,它让你非常容易编写出自己的领域特定代码。Lisp风格语言的大缺点是,它让你非常容易编写出自己的领域特定代码,但这可能导致每个人写的代码变得难以阅读。
Ruby语言在许多方面与Python相似,但对于Python中“支持但不鼓励”的动态元编程特性,Ruby社区则相对开放。这包括在已有类定义中添加新的方法,以及使用闭包来实现语言的核心结构,例如迭代。
学习这些语言,可以让你深入了解Python自己的动态元编程特性,包括函数和类装饰器、猴子补丁、unittest.mock标准库、以及像wrapt这样的三方对象代理模块。(我不知道学习哪种语言可以深入了解Python的元类系统,如果有人在这方面有任何建议,请在评论中告知我。Python的元类驱动着很多特性,例如核心的类型系统、抽象基类、枚举类型和渐变类型表达式的运行时求值。)
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。