网站性能检测评分
注:本网站页面html检测工具扫描网站中存在的基本问题,仅供参考。
python按照
Python将被纳入高考,小学生都在学Python,你慌了吗? 企业视频课程
Tips:“小鸟云”是深圳前海小鸟云计算有限公司旗下云计算品牌,国内领先的企业级云计算服务商。团队拥有多年行业经验,专注云计算技术研发,面向广大开发者、政企用户、金融机构等,提供基于智能云服务器的全方位云计算解决方案,为用户提供可信赖的企业级公有云服务。
已经没有什么能够阻挡 Python 了,根据最近火爆朋友圈的一则消息,Python 已经进入山东省小学教材。
Python 这几年的火热,离不开人工智能和机器学习。如果说 2017 年有一门最火“外语”,那一定是 Python。现在,Python 的这把火已经烧到了程序员的圈子外。
根据国务院《新一代人工智能发展规划的通知》,可以想见人工智能教育往低幼渗透的例子只会越来越多。
小学生学 Python 是培养编程兴趣和思维,为了你自己的百万年薪和发展前景,或许你才是最该学 Python 的人。
重大改革,Python将被加入高考科目
2017 年初消息,浙江省信息技术新教材,即将在 2017 级(2017 年 9 月入学)高中新生中开始使用。
据了解,与目前的选考(可以理解为高考科目)要求的信息技术教材由 3 本《信息技术基础》、《多媒体技术应用》、《算法与程序设计》3 本组成,涉及软件(应用软件与编程软件)包括但不限于:
信息技术基础:Excel、Access。
多媒体技术应用:Photoshop、Flash。
算法与程序设计:Visual Basic 6.0,算法部分只涉及冒泡、插入排序,与二分查找不同,取消《多媒体技术应用》模块。也就是说,不再考察 Photoshop 和 Flash 了,取消对 Excel、Access 软件使用的考察,编程语言将换用 Python。
浙江省信息技术课程改革方案已经出台,Python 确定进入浙江省信息技术高考,从 2018 年起浙江省信息技术教材编程语言将会从 VB 更换为 Python。
也就是说,Python 语言将纳入高考内容之一!编程语言在升学中的比重逐渐加大,将要成为高考提分的一大利器。
高考科目选考就是高中会考,分为考试科和考查科,考试科分 A、B、C、D四档,C 及其以上为及格的,会考全部通过可以领高中毕业证书并参加高考,高中毕业,有资格参加高考。
编程语言在升学中的比重逐渐加大,其实不止浙江,教育大省北京和山东也确定要把 Python 编程基础纳入信息技术课程和高考的内容体系,Python 语言课程化也将成为孩子学习的一种趋势。
尤其山东省最新出版的小学信息技术六年级教材也加入了 Python 内容,小学生都开始接触 Python 语言了!
估计很多人的疑问是,要不要这么夸张,C、C++、Java、Python 的编程,都是以前大学才开的专业课程,小学生乃至婴幼儿能懂吗?
在小学开设 Python 编程课,更多是培养兴趣和编程思维,培养孩子发现问题、思考问题、解决问题的能力,小到做数学应用题,大到职业生涯规划,都涉及到编程思维。
在美国,连婴幼儿都有 Python 编程书
回想一下,微软创始人比尔·盖茨 13 岁学习编程,Facebook 创始人扎克伯格 11 岁开始学习编程……
时代发展日新月异,小学生学编程早已不是新鲜事。现在,很多北京上海的家长开始给孩子做编程启蒙,各种编程培训机构也如火如荼。在美国,就连婴幼儿也有专门的编程童书。
在亚马逊,你可以轻松买到婴幼儿 Python 编程书,Python 要从娃娃抓起!
在去年美国一次计算机科学教育周开幕日活动中,时任美国总统的奥巴马亲自上阵,给中小学生示范计算机编程。白宫认为,计算机科学普及教育是美国未来几十年保持创新优势的关键举措之一。
未来将是大数据和人工智能爆发的时代,到时将会有大量的数据需要处理,而 Python 对数据的处理,有着得天独厚的优势。我相信在未来,Python 会越来越火。
未来是人工智能的时代,更是 Python 的时代,为了让孩子在未来有着基本的编程技能,Python 是孩子必须掌握的语言。所以,孩子学习 Python 是必不可少的。
Python 将加入全国计算机等级考试
教育部考试中心于 2017 年 10 月 11 日发布了“关于全国计算机等级(NCRE)体系调整”的通知,决定自 2018 年 3 月起,在计算机二级考试加入了“Python 语言程序设计”科目。
按照以往的经验,新加入的考试科目,考试难度一般会比较低。而且相对于传统的C语言等科目,Python 比较简单,对于大学在校生来说,无疑是一个利好的消息。
Python 语言为什么如此火爆?
在 ranked 的排名中,Python 是 2017 年最受欢迎人工智能编程语言,第二是 C++,R 并未上榜。
根据 Stack Overflow 流量统计,2017 年 6 月,Python 第一次成为高收入国家 Stack Overflow 访问量最大的标签,照此发展,到 2018 年,Python 肯定会成为最受欢迎的标签。
从最新的 TIOBE 12 月编程语言排行榜来看,排名Top 5 中 Python 依旧坚挺。
在GitHub 2017年度报告中,JavaScript 成为了年度最热门的编程语言,而 Python 超越 Java 成为最受开发者欢迎、最常用的编程语言。
Python 这门语言与其他语言比起来的优势还是很明显的,从薪水图来看,Python 的工作经验要求小于其他主流编程语言,并且平均薪资还是高于 Java / C / PHP /JS 这些主流语言的。
那么为什么近年来 Python 能够突破重围、突然火起来了?
简单易学且很容易上手
大多数人都相信“最好的编程语言”是取决于具体领域的,因为每种语言都有自身的优缺点,没有例外。
比如 Java 的体型臃肿、语法冗长一直被大量的开发者所诟病,C 语言极大依赖于程序员本身的驾驭能力,C++语法复杂对开发者很不友好,C# 缺乏生态支持后续乏力......
至少目前,还没有任何一门语言能完美满足所有需求特性。
Python 的执行速度慢是不可避免的。作为一门脚本语言,它自然会比那些需要编译为可执行程序的语言要慢一些,因为在执行的过程中需要解析器参与,一边解析一边执行——这是脚本语言的通病。
但在现代计算机的硬件配置下,Python 的运行速度和一些快速语言已经越来越近了。
而且瑕不掩瑜, Python 不仅不需要浪费太多时间做一些定义和强制转换变量类型的常规工作,还有大量免费的库供使用,无需“重新发明轮子”,各种 Web 框架、爬虫框架、数据分析框架、机器学习框架可以拿来即用。
此外它与 C / C ++ 等代码之间可以进行简单的绑定,这就意味着复杂代码部分的性能可以植入这些语言,能够避免带来性能损失。
目前, 越来越多的工程师使用 Python 进行大数据处理,科研工作者开始使用 Python 来进行数据分析,系统管理员使用 Python 管理 Linux 系统,开源的云计算平台 OpenStack 使用 Python 语言开发,很多编程爱好者使用 Python 进行爬虫等......
Python 已经逐步在网络爬虫、数据分析、AI、机器学习、Web 开发、金融、运维、测试等多个领域扎根壮大。
人工智能的爆发大大地添了一把火
在机器学习领域,Python 是 ROS(机器人操作系统) 的两大主要编程语言之一。
对于机器学习算法而言,重要的是算法能够快速构建、代码阅读性好、维护简单、上手容易,Python 能够很好地满足这些需求。
而且作为一门胶水语言,很多算法都会提供一个 Python 接口,底层仍然用更为快速的语言来实现,所以 Python 的角色主要在数据预处理、数据展示、算法定义等方面,这些动作所花费的机器执行时间几乎可以忽略不计。
所以开发者需要把握?「风口」,积极进阶。简单易学、语法优美、丰富强大的库、开发效率高、应用领域广泛等等,这些特性促使 Python 的入门和学习需求越来越强烈。
所有以上那些“刷榜”,都离不开最近人工智能尤其是机器学习的火热。总结一下 Python 被誉为最好人工智能的语言,因为:
在数据科学和AI中占据主导地位。
拥有优质的文档和丰富的库,对于科学用途的广泛编程任务都很有用。
设计非常好,快速,坚固,可移植,可扩展。
开源,而且拥有一个健康、活跃、支持度高的社区。
有一些很棒的公司赞助商,YouTube、谷歌、Yahoo!、NASA 都在内部大量地使用 Python,尤其是谷歌;Facebook 开源 PyTorch 后也更有利于Python的推广。
Python 势必成为人工智能时代的新宠儿,Python 这门学科也将引入大量的学习者,任何行业的成功人士当属那些先行者,人工智能的浪潮还未席卷,选择 Python 这门学科就是有先见之明。
Python不能用于大型项目?关于Python的10大误解 企业视频课程
语言多元化是PayPal编程文化中一个重要的组成部分。在C++和Java长期流行的同时,更多的团队选择了Jva和Scala。同时,Braintree的收购也引入了一个久经世故的Ruby社区。Python作为一门特别的语言,在eBay和PayPal有很长的历史。而且其流行程度依然有增不减。
eBay的开发者支持Python这个应用于基层领域多年的语言。甚至在eBay管理层官方支持Python以前,技术人员就开始使用Python。我在几年前加入PayPal并选择Python来写内部应用,然而,我却发现了PayPal中将近15年以前的Python代码。
目前,Python 支撑着 超过50个项目, 包括:
功能和产品型, 例如 eBay Now 和 RedLaser运营和基础设施型**, 从开放的 OpenStack 到专有设施中间层服务和应用型**, 例如 PayPal 用来设定价格以及检测用户可用功能的那个(服务/应用)监测代理和接口*型*, 用于涉及到部署和安全的一些用例批处理任务*型*, 例如数据导入,价格调整,及其它项目以及不计其数的开发者工具
在接下来的文章里我将详细介绍那些使得 eBay 和 PayPal 的 Python 生态系统从2011年的不超过25个工程师到2014年超过260个工程师所使用的技术和举措。对于本文,我则会专注于10个不得不予以揭露的关于 eBay 和 PayPal 的企业环境的谬误。
谬误 #1: Python 是一门新语言
伴随着所有的初创公司正在使用它以及孩子们最近也在学习它的事实,这个谬误为何仍然存在是可以理解的。实际上 Python 已经 超过23岁了, 它最初发布于1991年, 早于 HTTP 1.0协议 5年且早于 Java 4年. 目前比较有著名的很早就使用 Python 的例子是在1996年: Google 的第一个成功的网络爬虫。
如果你对于长长的 Python 历史比较好奇,Python 的作者 Guido van Rossum 已经为你准备好整个故事。
谬误 #2: Python 没有被编译
不像 C++ 一样需要一个独立的编译器工具链,Python 实际上被编译成了字节码,和 Java 或者许多其他的编译型语言十分相似。更进一步的编译过程,如果有的话, 取决于运行时环境, 不管是 CPython,PyPy,Jython/JVM,IronPython/CLR,或是其它的进程式虚拟机(process virtual machine)。参考 谬误 #6 来了解更多。
一条在 PayPal 以及其它地方的通用原则就是,(应用的)安全性不能依赖于代码的已编译状态。更为重要的是加强运行时环境的安全,因为实质上每种语言都有一个解码器,或者能被拦截并导出受保护的状态。参考下一条谬误来了解更多的 Python 安全性问题。
谬误 #3: Python 不安全
轻量级 Python 的亲和力可能使他看起来不怎么可怕,但是这里直觉很大程度上是受到了误导的. 安全的一个核心原则就是尽可能让呈现的目标更小. 大系统是违背安全原则的,因为他们趋向于 使行为过渡集中化, 并且也 让开发者难于理解. Python 通过倡导简洁化来边缘化这些恶心的问题. 更有甚者, CPython 通过让自己成为一个简单、稳定并且易于审核的虚拟机来使这些问题得到解决. 事实上,近期 Coverity Software 的一个分析结果显示 CPython 得到了他们的最高质量评级。
Python 还拥有一系列可扩展的开源、产业标准化的安全库序列. 在PayPal, 我们把安全和授信看做是重中之重, 我们发现 hashlib, PyCrypto, 以及 OpenSSL, 通过 PyOpenSSL 和我们自己的定制构建的结合,涵盖了 PayPal 多样化的安全和性能需求。
这些诸多的原因,使得 Python 成为PayPal(和eBay)的应用程序安全团队在某些业务中最快的选择. 这里有把Python用在PayPal的安全第一环境中的几个以安全为基础应用程序:
创建安全代理,以促进密钥的轮换以并巩固加密实现同业界领先的 HSM 技术集成为缺乏兼容性的技术栈构建受TLS保护的封装代理为我们内部的互相认证计划生成键和证书开发主动的漏洞扫描器
另外,还有无数存在安全隐患的用Python构建,面向操作的系统, 诸如防火墙和连接管理. 未来,我们一定回去深入的整合PayPal Python的安全事项.
谬误 #4: Python 是一门脚本语言
Python 确实可以用来编写脚本,并且因其简单的语法、跨平台并且无所不在于 Linux, Macs, 和其它Unix 机器而成为这个领域的领跑者之一。
事实上, Python 可能是常规用途编程语言中最灵活的技术. 以下是一些实例:
电信基础设施 (Twilio)支付系统 (PayPal, Balanced Payments)神经科学和心理学 (许多, 许多, 例子)数值分析和工程 (numpy, numba, 以及 更多其它)动画(LucasArts, Disney, Dreamworks)游戏后台 (Eve Online, Second Life, Battlefield, 以及 其它很多)Email 基础设施 (Mailman, Mailgun)媒体存储和处理 (YouTube, Instagram, Dropbox)操作和系统管理 (Rackspace, OpenStack)自然语言处理(NLTK)机器学习和计算机版本 (scikit-learn, Orange, SimpleCV)安全性和渗透性测试 (很多很多 以及 eBay/PayPal大数据 (Disco, Hadoop support)如理 (Calendar Server, 它 驱动了 Apple iCal)搜索系统 (ITA, Ultraseek, 还有 Google)Internet 基础设施 (DNS) (BIND 10)
更别提网站和web服务了,那些都不在少数. 事实上,PayPal工程师看起来像是有兴趣致力于基于Python的web特性,比如 YouTube 和 Yelp. 如果对Python成功案例的更大清单感兴趣,那就看看官方的清单吧.
谬误 #5: Python 是弱类型的
Python 类型系统的特点是拥有强大、灵活的类型操作. 维基百科上对此作出的阐述.
而存在一个不争而有趣的事实是, Python 是比Java更加强类型的. Java 对于原生类型和对象区分了类型系统,它让null存在于一个灰色地带. 另一方面,现代的 Python 拥有一个统一的强类型系统, 其中什么都没有 的类型是明确指定的. 更进一步的,JVM自身也是动态类型的,因为可以把它的 根源 追溯到由Sun所收购的Smalltalk VM的一个实现。
Python的类型系统 很棒,但要提供给企业级使用,目前仍然还有许多更重大的事项需要关注。
谬误 #6: Python 速度慢
首先是有一个重要区别: Python 是一门编程语言,而不是运行时环境. Python 拥有几个实现:
CPython是参考实现, 且也是广泛发布和使用的实现.Jython是Python用于JVM的是一个成熟的实现.IronPython是 Microsoft 针对其自家的通用语言运行时——又名 .NET,实现的Python .PyPy是一个正在日趋成熟的Python实现,拥有JIT编译,增量垃圾收集诸多先进的特性.每一个运行时都有其自己的性能特点, 而且他们本身也不慢. 这里更重要的地方在于不能错误地把一个性能指标分派到一门编程语言智商. 应该总是把该评估用在一个应用程序运行时上面,最好是针对一个特定的使用场景。
清楚了那些事项之后,下面就是一些有Python提供的小项,体现其重要的性能优势:
把 NumPy 用作 Intel 的 MKL SIMD接口PyPy的 JIT 编译能 达到比C还快的性能Disqus 能在同样的100个盒子上容纳两亿五千万到5亿用户
诚然,这些都不是最新的列子,只是我个人的最爱罢了. 这将很容易扯到高性能Python以及独立提供的运行时这些广阔的领域. 我们不应只是专注于解决单个特殊的案例, 而是应该把注意力放在对开发人员在 最终产品性能 方面的生产力的普遍影响上面, 特别是在一种企业级环境之下。
C++ vs Python,. 两种语言在同一个输出下的对比.
给定足够的时间,一个循规蹈矩的开发者只会按照下面这种经过论证的方式来编写精确高效的软件:
设计实现一个可以正确完成任务的软件,包括开发单独的测试测试性能,明确瓶颈优化,根据测试和Amdahl法则,并且利用Python与C的渊源
虽然这听起来很简单,但是即使是老道的工程师,这依旧是一个非常耗时的过程。Python设计之初就考虑到了这一套开发流程。根据我们的经验,通常C++和Java项目完成一次迭代流程的时间,够Python项目完成三次迭代流程。今天,PayPal和eBay中不乏有Python项目使用更少的代码战胜了同类C++和Java项目,这多亏了快速的开发使得仔
细的裁剪和优化变得可能。
Myth #7: Python无法做到大规模
大规模有许多定义,但无论怎样,YouTube是个大规模网站。每月UV超过十亿,每分钟上传的视频时长超过100小时,占用互联网带宽的20%,所有这一切都以Python作为核心技术。Dropbox,Disqus, Eventbrite, Reddit, Twilio, Instagram, Yelp, EVE Online, Second Life,,以及,是的,以及eBay和PayPal中都有Python大规模的例子,这些证明大规模不仅仅是可能:它是一种模式。
成功的关是键简单性且一致性。CPython,Python的主要虚拟机,其最大限度地放大了这些特性,从而演变出了一个精确可测的运行时。人们很难发现 Python程序员关心垃圾的收集暂停或应用地启动时间。拥有强大的平台和网络支持,Python其本身自然而然的智能水平可扩展,BitTorrent就是其充分的体现。
此外,规模化主要涵盖测量和迭代。Python是以分析和优化为要义建立的。看Myth #6了解更多Python如何垂直拓展的细节。
Myth #8: Python缺少好的并发支持
除了偶尔叫嚣性能和规模化的问题,有人想提的技术些,”Python缺乏并发,”或者,”GIL怎么样?”如果几十个反例仍不足以支持Python水平及垂直拓展规模的能力,那么再更深地解释CPython实现细节也不会有帮助,所以我会简短些。
Python拥有强大的并发原语,包括generators, greenlets, Deferreds, 和futures.。Python有优秀的并发框架,包括eventlet, gevent,和Twisted。Python在定制运行时尚投入了惊人的工作量,包括Stackless和 PyPy。所有烦人这些和更多表明,根本不存工程师们在Python并发编程方面的缺憾。同时,所有这些都正在被正式的在企业生产环境中支持或使用。例如,请参考Myth #7。
全局解释器锁,或称GIL,是Python在大多数应用场景下的性能优化,也是几乎所有CPython实现代码的开发上的基础优化。GIL使得Python可以很便利地使用操作系统的线程或轻线程(通常指greenlets),且不影响使用多进程。更多相关信息,请看该主题的Q&A列表,以及Python文档中的介绍。
在PayPal中,一个典型服务的部署需要多台机器,多个进程,多个线程,以及一个数字非常庞大的greenlets,相当于一个非常强大可扩展的并行环境(见下图)。在大多数的企业环境中,团队更倾向于往更高层次过度,谨慎并注重灾难恢复。然而,在某些情况下,每台机器每天Python服务仍然处理数以百万计的请求,而且轻松处理。
一个基于单一worker的协同异步架构草图。最外层的盒子是进程,下一个层次为线程,这里这些线程都是轻线程。操作系统处理线程间的抢占,而I/O异步协同合作。
谬误 #9: Python 程序员很稀缺
事实上,现在使用 Python 的 web 开发者的确没有使用 PHP 或者 Java 的 web 开发者多。这可能主要是由于企业需求和教育之间的相互作用导致的,不过 教育领域(教学所使用的编程语言)的趋势使得情况可能产生变化 。
也就是说,使用 Python 的开发者并不稀缺。现在全世界有数百万使用 Python 的开发者。已有几十个Python 技术大会、 StackOverflow 上成千上万的 Python 内容问答、雇佣大量使用 Python 的开发者的大企业比如 YouTube 、 美国银行( Bank of American )和 LucasArts/Dreamworks 等等,这些都显而易见地证实了这一点。在 eBay 和 PayPal 我们一直保持拥有几百位使用 Python 的正式开发者,这是怎么做到的呢?
那么,当一个项目被创建时为什么它会被首推?对于孩子来,大学生和教授们来说,Python作为第一门程序设计语言是非常易于学习的。在eBay,仅仅需要一个星期,一个新的Python程序员就能展示一个真正的成果,并且他们开始散发光芒常常只要2-3个月,通过Internet的宝藏(互动式教程,书,文档和开源代码库)一切皆有可能。
另外一个重要的考虑因素是,项目使用Python会更简单,它不会像其他项目那样需要那么多的开发者。在谬误6和谬误9中提到的那样,在Python项目中,学习像Instagram那样的高效团队是一个常见的比喻,并且这确实是我们在eBay和PayPal的经验。
Myth #10: Python不适应于大项目
Myth #7 讨论了大规模运行Python的项目,但开发Python大规模项目是什么情况呢?正如在Myth #9中提到的,大多数Python不被人看好。 然而Instagram在其被亿元美金收购当天达到千万的点击量,而整个公司只有十几个人。Dropbox在2011年只有70个工程师,其他团队更少。所以,Python适合大规模团队吗?
美国银行实际上有超过5000的Python开发者,一个单独的项目超过一千万行Python代码。JP摩根也经历了类似的转变。YouTube也有数千的开发者和数百万行的代码。大规模产品和团队每天都在使用Python,因为它具有良好的模块化和封装特性,在特定方面许多的大规模开发建议是一致的。工具,强大的惯例以及代码审查促使了项目规模化管理的现实。
幸运的是,Python发展于上面所提到的好的奠基。我们在检查执行使用pyflakes以及其他工具进行Python代码的静态分析,正如坚持PEP8——Python语言的基础风格指南。
最后,应该指出的是,除了调度加速Myth #6以及#7中所提到的,使用Python的项目通常需要更少的开发者。我们常见的成功案例中,使用Java或C++的项目通常有3-5开发者耗时2-6个月,最终由单一的开发者在2-6周(或小时,因为这些原因)完成...
2018年史上最全的Python安装教程 营销视频课程
Python是一门人工智能语言,小学生都自学Python了,你还不赶紧行动么。工欲善其事,必先利器。来吧
工具/原料:
Eclipse
Python
第一步:点击Help,再点击Install New Software
第二步:点击“Add”,弹出框中name栏输入:pydev
Location:http://pydev.org/updates
点击ok
第三步:选择第一个PyDev,d点击Next。之后就不停地点击下一个,直至安装成功。
第四步:点击Window 下的Preferences
第五步:输入py.或Python Interpreter.点击它。
第六步:点击New.选择路径。(关于python.exe请看附录)
第七步:选择Apply,点击Ok
第八步:New一个文件,如果找不到PyDev Project这个工程,那就在other里面找
第九步:配置工程
第十步:选择src,点击New,选择“Other”.
第十一步:运行程序,记得去掉注释,不然会报错
附录:
关于Python安装包:
第一步:进入官网:https://python.org/getit/下载
第二步:保存在你的文件夹中,以便导入Eclipse.
这个python-3.7.0.exe是下载完之后的,你要点击它,执行安装程序。下面那4个是安装完之后的产物。 导入Eclipse选择的是pythonw.exe文件,不要选错了哟。
注意事项:
1. python安装包要解压
2. 运行python文件要去掉注释,要按照步骤来产生对应的src结构出来。
这些Python代码技巧,你肯定还不知道 企业视频课程
选自FreeCodeCamp
作者:Peter Gleeson
机器之心编译
参与:路、王淑婷
被人工智能捧红的 Python 已是一种发展完善且非常多样化的语言,其中肯定有一些你尚未发现的功能。本文或许能够让你学到一些新技巧。
Python 是世界上最流行、热门的编程语言之一,原因很多,比如:
易于学习超高的通用性具备大量模块和库
本文将分享一些使用 Python 的技巧,顺序按照 A-Z 排列。
all or any
Python 非常受欢迎的原因之一是其可读性和表达性。
人们还经常把 Python 笑称为「可执行伪码(executable pseudocode)」。但是,当你可以编写这样的代码时,很难去反驳这种言论:
x = [True, True, False]if any(x): print("At least one True")if all(x): print("Not one False")if any(x) and not all(x): print("At least one True and one False")
bashplotlib
想在控制台中绘图吗?
$ pip install bashplotlib
使用上面的行,即可在控制台中绘图。
collections
Python 有一些很棒的默认数据类型,但有时候它们可能不会尽如你意。
不过,Python 标准库提供了 collections 模块。这个方便的附加组件可以为你提供更多数据类型。
collections 模块:https://docs.python.org/3/library/collections.html
from collections import OrderedDict, Counter# Remembers the order the keys are added!x = OrderedDict(a=1, b=2, c=3)# Counts the frequency of each charactery = Counter("Hello World!")
dir
你是否想过如何查看 Python 对象内部及其具有哪些属性?
输入以下命令行:
>>> dir()>>> dir("Hello World")>>>dir(dir)
当以交互方式运行 Python 时,这可能是一个非常有用的功能,并且可以动态地探索你正在使用的对象和模块。
想要了解更多,点这里:https://docs.python.org/3/library/functions.html#dir
emoji
是的,真的有。请点击这里:https://pypi.org/project/emoji/
$ pip install emoji
别以为我不知道你会偷偷试它→→
from emoji import emojizeprint(emojize(":thumbs_up:"))
from __future__ import
Python 流行的一个结果是,总有新版本正在开发中。新版本意味着新功能——除非你的版本已经过时。
不过,别担心。__ future__模块允许用户导入新版 Python 的功能。这简直就像时间旅行,或者魔法什么的。
__ future__模块:https://docs.python.org/2/library/*future*.html
from __future__ import print_functionprint("Hello World!")
geopy
地理(Geography)对于程序员来说可能是一个具有挑战性的领域。但是 geopy 模块让它变得异常简单。
geopy 模块:https://geopy.readthedocs.io/en/latest/
$ pip install geopy
它通过抽取一系列不同地理编码服务的 API 来工作,使用户获取一个地方的完整街道地址、纬度、经度,甚至海拔高度。
另外一个有用的功能是距离:它可以用你喜欢的度量单位计算出两个位置之间的距离。
from geopy import GoogleV3place = "221b Baker Street, London"location = GoogleV3().geocode(place)print(location.address)print(location.location)
howdoi
陷入编码问题,却不记得以前见过的解决方案?需要检查 StackOverflow,但不想离开终端?
那么你需要这个有用的命令行工具:https://github/gleitz/howdoi。
$ pip install howdoi
无论你有什么问题都可以问它,它会尽力回答。
$ howdoi vertical align css$ howdoi for loop in java$ howdoi undo commits in git
但是请注意——它会从 StackOverflow 的最高票答案中抓取代码。也就是说它提供的信息并非总是有用……
$ howdoi exit vim
inspect
Python 的 inspect 模块非常有助于理解问题背后的详情。你甚至可以在 inspect 模块上调用其方法!
inspect 模块:https://docs.python.org/3/library/inspect.html
下面的代码示例使用 inspect.getsource() 打印自己的源代码。它还使用 inspect.getmodule() 打印定义它的模块。
最后一行代码打印出自己的行号。
import inspectprint(inspect.getsource(inspect.getsource))print(inspect.getmodule(inspect.getmodule))print(inspect.currentframe().f_lineno)
当然,除了这些琐碎的用途之外,inspect 模块还能帮助你理解代码正在做的事。你还可以用它编写自文档化代码。
Jedi
Jedi 库是一个自动完成和代码分析的库。它使代码编写变得更快、效果更高。
除非你正在开发自己的 IDE,否则你肯定会对使用 Jedi 库作为编辑插件很感兴趣。
Jedi:https://jedi.readthedocs.io/en/latest/docs/usage.html
你可能已经在使用 Jedi 了。IPython 项目就使用 Jedi 实现代码自动完成功能。
**kwargs
学习任何语言时都会遇到很多里程碑。对于 Python 来说,理解神秘的**kwargs 语法可能算是其中之一。
词典对象前面的双星号可以让你把该词典的内容作为命名参数输入到函数中。
词典的秘钥是参数名,值是传递给函数的值。你甚至不需要称它为 kwargs!
dictionary = {"a": 1, "b": 2}def someFunction(a, b): print(a + b)return# these do the same thing:someFunction(**dictionary)someFunction(a=1, b=2)
当你想编写能够处理事先未定义的命名参数的函数时,这个很有用。
列表推导式(List comprehensions)
我最喜欢 Python 编程的原因之一是它的列表推导式(https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions)。
这些表达式使得编写干净易读的代码变得很容易,那些代码读起来几乎像自然语言一样。
关于它们的更多使用信息请查看:https://learnpython.org/en/List_Comprehensions
numbers = [1,2,3,4,5,6,7]evens = [x for x in numbers if x % 2 is 0]odds = [y for y in numbers if y not in evens]cities = ['London', 'Dublin', 'Oslo']def visit(city): print("Welcome to "+city)for city in cities: visit(city)
map
Python 通过许多内置功能支持函数式编程。map() 函数是最有用的函数之一——特别是当它与 lambda 函数结合使用时。
lambda 函数:https://docs.python.org/3/tutorial/controlflow.html#lambda-expressions
x = [1, 2, 3]y = map(lambda x : x + 1 , x)# prints out [2,3,4]print(list(y))
在上面的例子中,map() 将一个简单的 lambda 函数应用于 x 中的每个元素。它返回一个 map 对象,该对象可以被转换成可迭代的对象,如列表或元组。
newspaper3k
如果你之前没有见过它,那么我建议你先查看:https://pypi.org/project/newspaper3k/。
它可以帮助你从大量顶级国际出版物中检索到新闻文章和相关元数据。你可以检索图像、文本和作者名。
它还有一些内置的 NLP 功能。
地址:https://newspaper.readthedocs.io/en/latest/user_guide/quickstart.html#performing-nlp-on-an-article
如果你想在下一个项目中使用 BeautifulSoup 或其它 DIY 网页抓取库,那么不如使用$ pip install newspaper3k,既省时又省事,何乐而不为呢?
运算符重载(Operator overloading)
Python 支持运算符重载。
它实际上是一个简单的概念。你有没有想过为什么 Python 允许用户使用 + 运算符来将数字相加,并级联字符串?这就是运算符重载在发挥作用。
你可以使用 Python 的标准运算符号来定义对象,这样你可以在与这些对象相关的语境中使用它们。
classThing:def__init__(self, value):self.__value= value def __gt__(self, other):return self.__value > other.__value def __lt__(self, other):return self.__value < other.__valuesomething = Thing(100)nothing = Thing(0)# Truesomething > nothing# Falsesomething < nothing# Errorsomething + nothing
pprint
Python 的默认 print 函数就可以实现打印功能。但如果尝试打印较大的嵌套对象,就会发现打印结果很丑。
这时 Python 标准库的 pretty printer 模块就可以发挥作用了。该模块可以将复杂的结构化对象以一种易读的格式打印出来。
pretty printer 模块:https://docs.python.org/3/library/pprint.html
Python 开发者的必备技能之一就是处理复杂的数据结构。
import requestsimport pprinturl = 'https://randomuser.me/api/?results=1'users = requests.get(url).json()pprint.pprint(users)
Queue
Python 支持多线程,而这是由 Python 标准库的 Queue 模块支持的。
该模块允许用户实现队列(queue)数据结构。队列数据结构允许用户根据特定的规则添加和检索条目。
『First in, first out』 (FIFO) 队列允许用户按照对象被添加的顺序来检索对象。『Last in, first out』 (LIFO) 队列允许用户首先访问最新添加的对象。
最后,优先级队列(priority queue)允许用户根据对象对应的优先级类别来检索对象。
如何使用 queue 在 Python 中实现多线程编程,示例详见:https://tutorialspoint/python3/python_multithreading.htm。
__repr__
在 Python 中定义一个类别或对象时,以「官方」方式将对象表示为字符串很有用。例如:
>>> file = open('file.txt', 'r')>>>print(file)
这使代码 debug 变得简单很多。将字符串添加到类别定义,如下所示:
classsomeClass:def__repr__(self):return "
sh
Python 是一种伟大的脚本语言,不过有时使用标准 os 和 subprocess 库会有点棘手。
sh 库提供了一种不错的替代方案。
sh 库:http://amoffat.github.io/sh/
该库允许用户像使用普通函数一样调用任意程序,这对自动化工作流和任务非常有用。
from sh import *sh.pwd()sh.mkdir('new_folder')sh.touch('new_file.txt')sh.whoami()sh.echo('This is great!')
类型提示(Type hints)
Python 是动态语言。在定义变量、函数、类别等时无需指定数据类型。
这有利于缩短开发周期。但是,简单的类型错误(typing issue)导致的运行时错误真的太烦了。
从 Python 3.5 版本开始,用户可以选择在定义函数时开启类型提示。
def addTwo(x : Int) -> Int:return x + 2
你还可以定义类型别名:
from typing import ListVector = List[float]Matrix = List[Vector]def addMatrix(a : Matrix, b : Matrix) -> Matrix: result = []for i,row in enumerate(a): result_row =[]for j, col in enumerate(row): result_row += [a[i][j] + b[i][j]] result += [result_row]return resultx = [[1.0, 0.0], [0.0, 1.0]]y = [[2.0, 1.0], [0.0, -2.0]]z = addMatrix(x, y)
尽管非强制,但类型注释可以使代码更易理解。
它们还允许你在运行之前使用类型检查工具捕捉 TypeError。在进行大型复杂项目时执行此类操作是值得的。
uuid
生成通用唯一标识符(Universally Unique ID,UUID)的一种快速简单方法就是使用 Python 标准库的 uuid 模块。
uuid 模块:https://docs.python.org/3/library/uuid.html
import uuiduser_id = uuid.uuid4()print(user_id)
这创建了一个随机化后的 128 比特数字,该数字几乎必然是唯一的。
事实上,可以生成 2可能的 UUID。这个数字超过了 5,000,000,000,000,000,000,000,000,000,000,000,000。
在给定集合中找出重复数字的可能性极低。即使有一万亿 UUID,重复数字存在的概率也远远低于十亿分之一。
虚拟环境(Virtual environment)
这可能是 Python 中我最喜欢的事物了。
你可能同时处理多个 Python 项目。不幸的是,有时候两个项目依赖于相同依赖项的不同版本。那你要安装哪个版本呢?
幸运的是,Python 支持虚拟环境,这使得用户能够充分利用两种环境。见下列行:
python -m venv my-projectsource my-project/bin/activatepip install all-the-modules
现在你在一台机器上具备独立的多个 Python 版本了。问题解决!
wikipedia
Wikipedia 拥有一个很棒的 API,允许用户以编程方式访问巨大体量的免费知识和信息。
wikipedia 模块使得访问该 API 非常便捷。
Wikipedia 模块:https://wikipedia.readthedocs.io/en/latest/quickstart.html
import wikipediaresult = wikipedia.page('freeCodeCamp')print(result.summary)for link in result.links: print(link)
和真实的维基百科网站类似,该模块支持多种语言、页面消歧、随机页面检索,甚至还具备 donate() 方法。
xkcd
humour 是 Python 语言的一个关键特征,其名称来自英国喜剧片《蒙提·派森的飞行马戏团》(Monty Python and the Flying Circus)。Python 的很多官方文档引用了该喜剧片最著名的剧情。
幽默感并不限于文档。试着运行下列行:
import antigravity
将打开 xkcd 画的 Python 漫画。不要改变这一点,Python。不要改变。
YAML
YAML 代表 『YAML Ain』t Markup Language』。它是一种数据格式语言,是 JSON 的超集。
与 JSON 不同,它可以存储更复杂的对象并引用自己的元素。你还可以编写注释,使其尤其适用于编写配置文件。
PyYAML 模块(https://p...
魅力python——创建list、按照索引访问list、倒序访问list 营销视频课程
坚持每天更新,一起学习python
python当歌小伙伴们大家好,今天我们来了解一下python中的list。
在python中有一种内置的有序列表数据类型——list。注意:是有序的,后面我们还会遇到无序的列表数据类型。
我们首先举一个例子看一看
刚刚我们提到了list是有序的,我们打印这个list
我们可以观察到date,month,weekend,year是没有改变顺序的。list不是数学上的集合,数学上的集合具有无序性,list中的元素是有先后顺序的。
创建list
大家别为list的外表所蒙蔽了,创建list是非常简单的,只需要一个方括号把元素给括起来,多个元素用“,”隔开就行了。
我们看看刚刚这一个例子,元素'date'和'month'和'weekend'以及'year'被英文逗号隔开,整体用方括号括起来就组成一个list列表。
前天我们讲了python是一种动态语言,所以我们完全可以在list中使用各种各样的数据类型。如下图
按索引访问list
list是有序集合,所以内部是有编号的,我们把list内部元素的编号叫做索引。
计算机喜欢从0开始排序,同样,python也不例外。Python中list索引是从0开始的。第一个元素的索引是0,第二个元素的索引是1,……
首先我们建一个list
一共四个元素,我们按照索引打印出来
这就是按照索引查看list
注意,list索引不可以越界。也就是说一个list中有4个元素,那么索引最大是3,超过3就会报错。
倒序访问list
倒序访问与顺序访问如出一辙,不同的是倒序访问用负数作为索引,-1是倒数第一个,-2是倒数第二个,……
我们举个例子加深印象
我们看见倒序打印出了D、C、B、A,顺序被颠倒了。说明是由D到A的顺序访问的
每天学一点,积少成多。
后期会循序渐进、由浅入深的讲解python知识,如果想学习python入门,欢迎订阅转发。
如果还有不明白的小伙伴,欢迎留言评论或私信告诉我。
Python不能用于大型项目?关于Python的10大误解 流量视频课程
语言多元化是PayPal编程文化中一个重要的组成部分。在C++和Java长期流行的同时,更多的团队选择了Jva和Scala。同时,Braintree的收购也引入了一个久经世故的Ruby社区。Python作为一门特别的语言,在eBay和PayPal有很长的历史。而且其流行程度依然有增不减。
eBay的开发者支持Python这个应用于基层领域多年的语言。甚至在eBay管理层官方支持Python以前,技术人员就开始使用Python。我在几年前加入PayPal并选择Python来写内部应用,然而,我却发现了PayPal中将近15年以前的Python代码。
目前,Python 支撑着 超过50个项目, 包括:
功能和产品型, 例如 eBay Now 和 RedLaser运营和基础设施型**, 从开放的 OpenStack 到专有设施中间层服务和应用型**, 例如 PayPal 用来设定价格以及检测用户可用功能的那个(服务/应用)监测代理和接口*型*, 用于涉及到部署和安全的一些用例批处理任务*型*, 例如数据导入,价格调整,及其它项目以及不计其数的开发者工具
在接下来的文章里我将详细介绍那些使得 eBay 和 PayPal 的 Python 生态系统从2011年的不超过25个工程师到2014年超过260个工程师所使用的技术和举措。对于本文,我则会专注于10个不得不予以揭露的关于 eBay 和 PayPal 的企业环境的谬误。
谬误 #1: Python 是一门新语言
伴随着所有的初创公司正在使用它以及孩子们最近也在学习它的事实,这个谬误为何仍然存在是可以理解的。实际上 Python 已经 超过23岁了, 它最初发布于1991年, 早于 HTTP 1.0协议 5年且早于 Java 4年. 目前比较有著名的很早就使用 Python 的例子是在1996年: Google 的第一个成功的网络爬虫。
如果你对于长长的 Python 历史比较好奇,Python 的作者 Guido van Rossum 已经为你准备好整个故事。
谬误 #2: Python 没有被编译
不像 C++ 一样需要一个独立的编译器工具链,Python 实际上被编译成了字节码,和 Java 或者许多其他的编译型语言十分相似。更进一步的编译过程,如果有的话, 取决于运行时环境, 不管是 CPython,PyPy,Jython/JVM,IronPython/CLR,或是其它的进程式虚拟机(process virtual machine)。参考 谬误 #6 来了解更多。
一条在 PayPal 以及其它地方的通用原则就是,(应用的)安全性不能依赖于代码的已编译状态。更为重要的是加强运行时环境的安全,因为实质上每种语言都有一个解码器,或者能被拦截并导出受保护的状态。参考下一条谬误来了解更多的 Python 安全性问题。
谬误 #3: Python 不安全
轻量级 Python 的亲和力可能使他看起来不怎么可怕,但是这里直觉很大程度上是受到了误导的. 安全的一个核心原则就是尽可能让呈现的目标更小. 大系统是违背安全原则的,因为他们趋向于 使行为过渡集中化, 并且也 让开发者难于理解. Python 通过倡导简洁化来边缘化这些恶心的问题. 更有甚者, CPython 通过让自己成为一个简单、稳定并且易于审核的虚拟机来使这些问题得到解决. 事实上,近期 Coverity Software 的一个分析结果显示 CPython 得到了他们的最高质量评级。
Python 还拥有一系列可扩展的开源、产业标准化的安全库序列. 在PayPal, 我们把安全和授信看做是重中之重, 我们发现 hashlib, PyCrypto, 以及 OpenSSL, 通过 PyOpenSSL 和我们自己的定制构建的结合,涵盖了 PayPal 多样化的安全和性能需求。
这些诸多的原因,使得 Python 成为PayPal(和eBay)的应用程序安全团队在某些业务中最快的选择. 这里有把Python用在PayPal的安全第一环境中的几个以安全为基础应用程序:
创建安全代理,以促进密钥的轮换以并巩固加密实现同业界领先的 HSM 技术集成为缺乏兼容性的技术栈构建受TLS保护的封装代理为我们内部的互相认证计划生成键和证书开发主动的漏洞扫描器
另外,还有无数存在安全隐患的用Python构建,面向操作的系统, 诸如防火墙和连接管理. 未来,我们一定回去深入的整合PayPal Python的安全事项.
谬误 #4: Python 是一门脚本语言
Python 确实可以用来编写脚本,并且因其简单的语法、跨平台并且无所不在于 Linux, Macs, 和其它Unix 机器而成为这个领域的领跑者之一。
事实上, Python 可能是常规用途编程语言中最灵活的技术. 以下是一些实例:
电信基础设施 (Twilio)支付系统 (PayPal, Balanced Payments)神经科学和心理学 (许多, 许多, 例子)数值分析和工程 (numpy, numba, 以及 更多其它)动画(LucasArts, Disney, Dreamworks)游戏后台 (Eve Online, Second Life, Battlefield, 以及 其它很多)Email 基础设施 (Mailman, Mailgun)媒体存储和处理 (YouTube, Instagram, Dropbox)操作和系统管理 (Rackspace, OpenStack)自然语言处理(NLTK)机器学习和计算机版本 (scikit-learn, Orange, SimpleCV)安全性和渗透性测试 (很多很多 以及 eBay/PayPal大数据 (Disco, Hadoop support)如理 (Calendar Server, 它 驱动了 Apple iCal)搜索系统 (ITA, Ultraseek, 还有 Google)Internet 基础设施 (DNS) (BIND 10)
更别提网站和web服务了,那些都不在少数. 事实上,PayPal工程师看起来像是有兴趣致力于基于Python的web特性,比如 YouTube 和 Yelp. 如果对Python成功案例的更大清单感兴趣,那就看看官方的清单吧.
谬误 #5: Python 是弱类型的
Python 类型系统的特点是拥有强大、灵活的类型操作. 维基百科上对此作出的阐述.
而存在一个不争而有趣的事实是, Python 是比Java更加强类型的. Java 对于原生类型和对象区分了类型系统,它让null存在于一个灰色地带. 另一方面,现代的 Python 拥有一个统一的强类型系统, 其中什么都没有 的类型是明确指定的. 更进一步的,JVM自身也是动态类型的,因为可以把它的 根源 追溯到由Sun所收购的Smalltalk VM的一个实现。
Python的类型系统 很棒,但要提供给企业级使用,目前仍然还有许多更重大的事项需要关注。
谬误 #6: Python 速度慢
首先是有一个重要区别: Python 是一门编程语言,而不是运行时环境. Python 拥有几个实现:
CPython是参考实现, 且也是广泛发布和使用的实现.Jython是Python用于JVM的是一个成熟的实现.IronPython是 Microsoft 针对其自家的通用语言运行时——又名 .NET,实现的Python .PyPy是一个正在日趋成熟的Python实现,拥有JIT编译,增量垃圾收集诸多先进的特性.每一个运行时都有其自己的性能特点, 而且他们本身也不慢. 这里更重要的地方在于不能错误地把一个性能指标分派到一门编程语言智商. 应该总是把该评估用在一个应用程序运行时上面,最好是针对一个特定的使用场景。
清楚了那些事项之后,下面就是一些有Python提供的小项,体现其重要的性能优势:
把 NumPy 用作 Intel 的 MKL SIMD接口PyPy的 JIT 编译能 达到比C还快的性能Disqus 能在同样的100个盒子上容纳两亿五千万到5亿用户
诚然,这些都不是最新的列子,只是我个人的最爱罢了. 这将很容易扯到高性能Python以及独立提供的运行时这些广阔的领域. 我们不应只是专注于解决单个特殊的案例, 而是应该把注意力放在对开发人员在 最终产品性能 方面的生产力的普遍影响上面, 特别是在一种企业级环境之下。
C++ vs Python,. 两种语言在同一个输出下的对比.
给定足够的时间,一个循规蹈矩的开发者只会按照下面这种经过论证的方式来编写精确高效的软件:
设计实现一个可以正确完成任务的软件,包括开发单独的测试测试性能,明确瓶颈优化,根据测试和Amdahl法则,并且利用Python与C的渊源
虽然这听起来很简单,但是即使是老道的工程师,这依旧是一个非常耗时的过程。Python设计之初就考虑到了这一套开发流程。根据我们的经验,通常C++和Java项目完成一次迭代流程的时间,够Python项目完成三次迭代流程。今天,PayPal和eBay中不乏有Python项目使用更少的代码战胜了同类C++和Java项目,这多亏了快速的开发使得仔
细的裁剪和优化变得可能。
Myth #7: Python无法做到大规模
大规模有许多定义,但无论怎样,YouTube是个大规模网站。每月UV超过十亿,每分钟上传的视频时长超过100小时,占用互联网带宽的20%,所有这一切都以Python作为核心技术。Dropbox,Disqus, Eventbrite, Reddit, Twilio, Instagram, Yelp, EVE Online, Second Life,,以及,是的,以及eBay和PayPal中都有Python大规模的例子,这些证明大规模不仅仅是可能:它是一种模式。
成功的关是键简单性且一致性。CPython,Python的主要虚拟机,其最大限度地放大了这些特性,从而演变出了一个精确可测的运行时。人们很难发现 Python程序员关心垃圾的收集暂停或应用地启动时间。拥有强大的平台和网络支持,Python其本身自然而然的智能水平可扩展,BitTorrent就是其充分的体现。
此外,规模化主要涵盖测量和迭代。Python是以分析和优化为要义建立的。看Myth #6了解更多Python如何垂直拓展的细节。
Myth #8: Python缺少好的并发支持
除了偶尔叫嚣性能和规模化的问题,有人想提的技术些,”Python缺乏并发,”或者,”GIL怎么样?”如果几十个反例仍不足以支持Python水平及垂直拓展规模的能力,那么再更深地解释CPython实现细节也不会有帮助,所以我会简短些。
Python拥有强大的并发原语,包括generators, greenlets, Deferreds, 和futures.。Python有优秀的并发框架,包括eventlet, gevent,和Twisted。Python在定制运行时尚投入了惊人的工作量,包括Stackless和 PyPy。所有烦人这些和更多表明,根本不存工程师们在Python并发编程方面的缺憾。同时,所有这些都正在被正式的在企业生产环境中支持或使用。例如,请参考Myth #7。
全局解释器锁,或称GIL,是Python在大多数应用场景下的性能优化,也是几乎所有CPython实现代码的开发上的基础优化。GIL使得Python可以很便利地使用操作系统的线程或轻线程(通常指greenlets),且不影响使用多进程。更多相关信息,请看该主题的Q&A列表,以及Python文档中的介绍。
在PayPal中,一个典型服务的部署需要多台机器,多个进程,多个线程,以及一个数字非常庞大的greenlets,相当于一个非常强大可扩展的并行环境(见下图)。在大多数的企业环境中,团队更倾向于往更高层次过度,谨慎并注重灾难恢复。然而,在某些情况下,每台机器每天Python服务仍然处理数以百万计的请求,而且轻松处理。
一个基于单一worker的协同异步架构草图。最外层的盒子是进程,下一个层次为线程,这里这些线程都是轻线程。操作系统处理线程间的抢占,而I/O异步协同合作。
谬误 #9: Python 程序员很稀缺
事实上,现在使用 Python 的 web 开发者的确没有使用 PHP 或者 Java 的 web 开发者多。这可能主要是由于企业需求和教育之间的相互作用导致的,不过 教育领域(教学所使用的编程语言)的趋势使得情况可能产生变化 。
也就是说,使用 Python 的开发者并不稀缺。现在全世界有数百万使用 Python 的开发者。已有几十个Python 技术大会、 StackOverflow 上成千上万的 Python 内容问答、雇佣大量使用 Python 的开发者的大企业比如 YouTube 、 美国银行( Bank of American )和 LucasArts/Dreamworks 等等,这些都显而易见地证实了这一点。在 eBay 和 PayPal 我们一直保持拥有几百位使用 Python 的正式开发者,这是怎么做到的呢?
那么,当一个项目被创建时为什么它会被首推?对于孩子来,大学生和教授们来说,Python作为第一门程序设计语言是非常易于学习的。在eBay,仅仅需要一个星期,一个新的Python程序员就能展示一个真正的成果,并且他们开始散发光芒常常只要2-3个月,通过Internet的宝藏(互动式教程,书,文档和开源代码库)一切皆有可能。
另外一个重要的考虑因素是,项目使用Python会更简单,它不会像其他项目那样需要那么多的开发者。在谬误6和谬误9中提到的那样,在Python项目中,学习像Instagram那样的高效团队是一个常见的比喻,并且这确实是我们在eBay和PayPal的经验。
Myth #10: Python不适应于大项目
Myth #7 讨论了大规模运行Python的项目,但开发Python大规模项目是什么情况呢?正如在Myth #9中提到的,大多数Python不被人看好。 然而Instagram在其被亿元美金收购当天达到千万的点击量,而整个公司只有十几个人。Dropbox在2011年只有70个工程师,其他团队更少。所以,Python适合大规模团队吗?
美国银行实际上有超过5000的Python开发者,一个单独的项目超过一千万行Python代码。JP摩根也经历了类似的转变。YouTube也有数千的开发者和数百万行的代码。大规模产品和团队每天都在使用Python,因为它具有良好的模块化和封装特性,在特定方面许多的大规模开发建议是一致的。工具,强大的惯例以及代码审查促使了项目规模化管理的现实。
幸运的是,Python发展于上面所提到的好的奠基。我们在检查执行使用pyflakes以及其他工具进行Python代码的静态分析,正如坚持PEP8——Python语言的基础风格指南。
最后,应该指出的是,除了调度加速Myth #6以及#7中所提到的,使用Python的项目通常需要更少的开发者。我们常见的成功案例中,使用Java或C++的项目通常有3-5开发者耗时2-6个月,最终由单一的开发者在2-6周(或小时,因为这些原因)完成...