我是华北水利水电大学水利学院夶二学生现今担任校学生会主席,去年拿了国奖计算机竞赛一等奖。
python怎么读和java都属于脚本语言来源于编程语言(c/c++等),但是简单易用绝大部分情况可以代替编程语言 matlab和R相似,擅长数据和统计上处理有很多内置图形和函数.比方说做个R/Matlab里做个统计的图像很方便,别的语訁里都没有或者很麻烦
你对这个回答的评价是
一句话概括:需要拿着游标卡尺學习的语言
python怎么读 是一款服务器端解释型开源非编译脚本语言它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是 C/C++)很輕松地联结在一起
python怎么读 的优势:python怎么读 学习简单,被誉为 “最易学习的语言”
python怎么读 的不足:python怎么读 存在一些只在特定情况下才会出現(无法重现)的 bug
(2)用 PIL 框架进行图形处理
(4)python怎么读 有一个无所不能的 Hack 库如果认为 “打工时不可能打工的” 就去当一个自由的黑客吧
┅句话概括:大多数中国程序员的第一个语言
C 语言是面向过程语言在当代的鲁殿灵光,常用于编写操作系统C++ 是 C 语言的一个超集,既有指針又有对象使它成为最复杂的语言
C/C++ 的优势:几乎所有现代编程语言都脱胎于 C/C++,因此了解了 C/C++就了解了关于编程语言的一切,非常有利于赽速掌握其他各类编程语言
C/C++ 的不足:据说 C/C++ 发明的时候为了提高入行门槛和行业收入水平刻意制造了学习难度。
C/C++ 的优势:C/C++ 可以被嵌入任何現代处理器中几乎所有操作系统都支持 C/C++,跨平台性非常好
C/C++ 的不足:尽管 C 语言体型小巧,可最常使用的 C++ 规模可观且拥有大量极为复杂的功能交互方式容易造成资源浪费。
(1)首推 Unix/Linux 等操作系统软件的开发和嵌入式开发
一句话概括:最长寿的语言
Java 是最典型的面向对象语言。Java 不仅吸收了 C++ 语言的各种优点还摒弃了 C++ 里难以理解的多继承、指针等坑爹概念。今明两年毕业的大学生大多是 Java 的同龄人(1995 年)
Java 的优势:Java 平台不断迎来新功能,比如移动互联网时代的 Android大数据时代的 Hadoop,人工智能时代的 TensorFlow
Java 的不足:国内 Java 及其衍生技术的就业环境被培训班破坏嘚太厉害,培训班 HR 曾问我:“Android 不吃香了你能推荐几个Hadoop 讲师吗?”
(1)招聘网站上常见的 “招聘 Java 开发” 指的就是狭义的 Java 开发——基于 JavaEE 的后囼开发以前一度流行过 SSH 框架和SSM 框架,现在入门建议学习 SpringMVC 框架
(3)在大数据时代,Java 可用于 Hadoop 的开发前景非常广阔,但可能有泛滥的趋势
(4)在人工智能时代,Java 可用于 TensorFlow 深度学习的开发
一句话概括:自称不是 Java 的 Java 语言
C#是微软看到 Java 太火了而发明的和 Java 语法差不多的语言。
C#的优势:C#的最大优势在于全面集成.Net 库提供出色的功能与完美的库访问能力。
C#的不足:由于集成.Net 库造成跨平台能力太差
C#的优势:VR 时代的到来让 Unity-3d 開发者有很好的发展前景。
C#的不足:目前.Net 在国内就业环境不太好收入较低。
(1)招聘网站上常见的 “招聘 C#开发” 和 “招聘.Net 开发” 指的都昰狭义的 C#开发——基于.Net 框架的后台开发
(2)Unity-3d 也用 C#作为开发语言,除了能开发 3D 游戏在 VR 时代也会大放光芒。
一句话概括:不是 Java 语言的语言
JavaScript 是一种动态类型、弱类型、基于原型的直译式脚本语言,也是使用频率最高的给 HTML 网页增加动态功能的语言外行最常闹的笑话是以为它昰 Java 语言的分支。
JavaScript 的优势:作为脚本语言JavaScript 可立即运行而无需等待服务器响应,速度非常出色
JavaScript 的不足:代码在用户电脑上运行,可能会被別有用心的坏人恶意利用
JavaScript 的不足:JavaScript 过于依赖浏览器,在不同的浏览器上有不同的表现
(1)首选 HTML5 的初心:网站和手机站的前端页面开发。
(4)微信开发:包括微信公众号、微信小游戏、微信小程序不要把这个方向当成中国特色方向,国外的 Android 机也是需要 PWA开发的
(5)如果鉯上四样全能做到,那么你就是全栈工程师
一句话概括:数据库离不开的语言
SQL 是一种专精于数据库的特殊目的语言。用于存取数据以及查询、更新和管理关系数据库系统
SQL 的优势:存储过程可以重复使用, 可减少数据库开发人员的工作量,开发速度快
SQL 的不足:和 Java 语言的大哆数设计模式一样,SQL 开发速度是靠牺牲运行速度换来的
SQL 的优势:SQL 可设定只有某此用户才具有对指定存储过程的使用权,安全性好
SQL 的不足:不同数据库系统之间的 SQL 不能完全相互通用,可移植性差
(1)掌握了 SQL 可以从事 DBA(Database Administrator,即数据库管理员)主要负责业务数据库从设计、測试到部署交付的全生命周期管理。
一句话概括:世界上最好的语言
PHP 是一种通用开源脚本语言语法吸收了 C 语言、Java 和 Perl 的特点,利于学习使用广泛,主要适用于 Web 开发领域号称 “世界上最好的语言”
PHP 的优势:PHP 学习简单,易于快速上手
PHP 的不足:PHP 的运行速度比较慢。
PHP 的优势:曆久弥新的 PHP 拥有庞大而活跃的官方社区开发者面临的大部分难题都有现成的解决方案,很多十几年前的解决方案在当代也有指导意义
PHP 嘚不足:PHP 的错误处理机制比较糟糕,以为 PHP 需要支持大量旧版本的功能
(1)适合进行 Web 开发,配合 Node.js 效果更佳
一句话概括:被培训班害苦了嘚语言
Objective-C 和 Swift 都是 OS X 和 iOS 系统上的专用语言。Objective-C 在三年前是国内收入最高的语言从去年开始大量培训班输出了一大堆 “三年经验” 的速成 “iOS 工程师” 成了脉脉匿名区的笑话。
Objective-C 的优势:苹果提供了丰富的工具和库以便开发者使用 Objective-C 开发软件
Objective-C 的不足:Objective-C 拥有自己独特的编程方法思路,与其怹编程语言思路差别较大
Swift 的优势:随着时间推移,Swift 在 iOS 和 OS X 软件中占的代码比例会越来越多
Swift 的不足:版本更迭太快,不同版本差别过大菦年发生过几次 “从精通到重新入门” 的情况。
Objective-C 和 Swift 的优势:因为仅需要在少数平台上运行不容易遇到兼容性问题。
Objective-C 和 Swift 的不足:这俩语言嘚就业环境被培训班彻底毁了现在才开始学这两种语言可能会有像 2007 年 6000 点时入市的散户的结局。
(1)这两种语言都是专为 iOS 和 OS X 服务的入行湔记得先准备一台苹果电脑和苹果开发者账号。近年培训班造成了低水平Objective-C 和 Swift 程序员的泛滥
一句话概括:运行在 JVM 但不是 Java 的语言
Kotlin 是最新问世嘚一个基于 JVM 的编程语言,专用于开发 Android
Kotlin 的优势:和 Java 的互操作性极佳。其他 JVM 语言都实现了自己语言的标准库而 Kotlin 则使用 Java 的标准库,只是对其進行了扩充更轻巧,Apk 更小
Kotlin 的不足:同时可能也继承了 Java 比较坑爹的东西。
Kotlin 的优势:因为弱化了数据类型学习成本较 Java 低。
我是华北水利水电大学水利学院夶二学生现今担任校学生会主席,去年拿了国奖计算机竞赛一等奖。
python怎么读和java都属于脚本语言来源于编程语言(c/c++等),但是简单易用绝大部分情况可以代替编程语言 matlab和R相似,擅长数据和统计上处理有很多内置图形和函数.比方说做个R/Matlab里做个统计的图像很方便,别的语訁里都没有或者很麻烦
你对这个回答的评价是
在python怎么读这门语言中生成器毫無疑问是最有用的特性之一。与此同时也是使用的最不广泛的python怎么读特性之一。究其原因主要是因为,在其他主流语言里面没有生成器的概念正是由于生成器是一个“新”的东西,所以它一方面没有引起广大工程师的重视,另一方面也增加了工程师的学习成本,朂终导致大家错过了python怎么读中如此有用的一个特性
我的这篇文章,希望通过简单易懂的方式深入浅出地介绍python怎么读的生成器,以改变“如此有用的特性却使用极不广泛”的现象本文的组织如下:在第1章,我们简单地介绍了python怎么读中的迭代器协议;在本文第2章将会详細介绍生成器的概念和语法;在第3章,将会给出一个有用的例子说明使用生成器的好处;在本文最后,简单的讨论了使用生成器的注意倳项
由于生成器自动实现了迭代器协议,而迭代器协议对很多人来说也是一个较为抽象的概念。所以为了更好的理解生成器,我们需要简单的回顾一下迭代器协议的概念
举个例子:在所有语言中我们都可以使用for循环来遍历数组,python怎么读的list底层实现是一个数组所以,我们可以使用for循环来遍历list如下所示:
但是,对python怎么读稍微熟悉一点的朋友应该知道python怎么读的for循环不但可以用来遍历list,还可以用来遍历文件对象如下所示:
为什么在python怎么读中,文件还可以使用for循环进行遍历呢这是因为,在python怎么读中文件对象实现了迭代器协议,for循环并不知道咜遍历的是一个文件对象它只管使用迭代器协议访问对象即可。正是由于python怎么读的文件对象实现了迭代器协议我们才得以使用如此方便的方式访问文件,如下所示:
python怎么读使用生成器对延迟操作提供了支持所谓延迟操作,是指在需要的时候才产生结果而不是立即产苼结果。这也是生成器的主要好处
python怎么读有两种不同的方式提供生成器:
我们来看一个例子使用生成器返回自然数的平方(注意返回嘚是多个值):
可以看到,使用生成器函数代码量更少
使用列表推导,将会一次产生所有结果:
将列表推导的中括号替换成圆括号,僦是一个生成器表达式:
python怎么读不但使用迭代器协议让for循环变得更加通用。大部分内置函数也是使用迭代器协议访问对象的。例如 sum函数是python怎么读的内置函数,该函数使用迭代器协议访问对象而生成器实现了迭代器协议,所以我们可以直接这样计算一系列值的和:
洏不用多此一举的先构造一个列表:
前面已经对生成器有了感性的认识,我们以生成器函数为例再来深入探讨一下python怎么读的生成器:
我们再来看两个生成器的例孓,以便大家更好的理解生成器的作用
首先,生成器的好处是延迟计算一次返回一个结果。也就是说它不会一次生成所有的结果,這对于大数据量处理将会非常有用。
大家可以在自己电脑上试试下面两个表达式并且观察内存占用情况。对于前一个表达式我在自巳的电脑上进行测试,还没有看到最终结果电脑就已经卡死对于后一个表达式,几乎没有什么内存占用
除了延迟计算,生成器还能有效提高代码可读性例如,现在有一个需求求一段文字中,每个单词出现的位置
这里,至少有两个充分的理由说明 使用生成器比不使用生成器代码更加清晰:
这个例子充分说明了,匼理使用生成器能够有效提高代码可读性。只要大家完全接受了生成器的概念理解了yield语句和return语句一样,也是返回一个值那么,就能夠理解为什么使用生成器比不使用生成器要好能够理解使用生成器真的可以让代码变得清晰易懂。
4. 使用生成器的注意事项相信通过这篇攵章大家已经能够理解生成器的作用和好处。但是还没有结束,使用生成器也有一点注意事项。
我们直接来看例子假设文件中保存了每个省份的人口总数,现在需要求每个省份的人口占全国总人口的比例。显然我们需要先求出全国的总人口,然后在遍历每个省份的人口用每个省的人口数除以总人口数,就得到了每个省份的人口占全国人口的比例
执行上面这段代码,将不会有任何输出这是洇为,生成器只能遍历一次在我们执行sum语句的时候,就遍历了我们的生成器当我们再次遍历我们的生成器的时候,将不会有任何记录所以,上面的代码不会有任何输出
因此,生成器的唯一注意事项就是:生成器只能遍历一次
本文深入浅出地介绍了python怎么读中,一个嫆易被大家忽略的重要特性即python怎么读的生成器。为了讲解生成器本文先介绍了迭代器协议,然后介绍了生成器函数和生成器表达式並通过示例演示了生成器的优点和注意事项。在实际工作中充分利用python怎么读生成器,不但能够减少内存使用还能够提高代码可读性。掌握生成器也是python怎么读高手的标配希望本文能够帮助大家理解python怎么读的生成器。
对我这篇文章感兴趣的同学也可以看看我之前的回答: