python语言提供的3个基本数字类型有哪些(Python语言)
Python语言
如果把高中AppleⅡ上用过的Basic算起 ,我用过的编程语言应该有十种以上了 。
其中工作中用过的有C ,C++ ,pascal(OP/Delphi) ,java ,C# ,basic(VB) ,Unix/Linux shell(awk) ,perl ,python ,PHP ,javascript ,所谓工作中用过的,就是我凭这些语言写的程序赚过钱的 。另外自己捣鼓过的还有haskell ,F# ,scala,Go ,D ,Object-C ,汇编 ,eiffel等 ,至于erlang ,lisp ,prolog ,lua ,ruby ,dart等语言 ,那就只见过demo程序 ,自己没写过了 。当然,像html ,css ,xml/xslt,bat ,jsp/asp ,SQL这样的语言没有被我算在编程语言里 。
就我个人来说 ,我最喜欢Python语言和C语言 。D语言看上去不错 ,不过没什么前途 ,Go语言也挺好 ,也许以后会多用 ,但是现在首先是还没出1.0版(计划2012上半年会出) ,而且现在Windows上的实现不行 ,先等会 。
Python语言的好处在于表现力强 ,兼库多且给力 。而C语言的好处在于对底层的抽象不多也不少 。它们都有简洁的优点 ,而且不像Perl的简洁 ,Python代码阅读起来很容易懂,Perl的代码放几个月以后你要重新理解它的语法 ,会以为当时自己在写天书 。
国内主要使用Python的网站中 ,最知名的就是豆瓣网了,豆瓣的洪强宁这篇QCon BJ 2010的幻灯片已经把Python的特点说得很多 ,说得很明白 ,也说得很好了 。而至于Python学习的趣味网站 ,赖勇浩的这篇文章虽然是2008年的了 ,也是很不错的 。
看幻灯片也有点花时间 ,下面举几个例子:
#注:python的列表和C一样 ,都是从0开始的 。</p> <p>a = range(10)<br /> #a为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]这样的一个列表<br /> b = a[3:]<br /> #b为从a的第四个元素开始(含第四个)的子列表 ,即[3, 4, 5, 6, 7, 8, 9]<br /> c = a[:-3]<br /> #c为从a第一个元素开始 ,至倒数第三个元素(不含)的子列表 ,即[0, 1, 2, 3, 4, 5, 6]</p> <p>d = [_*2 for _ in a if _ % 3 == 0]<br /> #d列表的元素为a中3的倍数的元素的2倍 ,即[0, 6, 12, 18]<br /> e = reduce(lambda r,x: r if x > 5 else r + x, a, 10)<br /> #e为a中所有小于5的元素之和再加上10 ,即25
#注:python的列表和C一样 ,都是从0开始的。
#a为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]这样的一个列表
#b为从a的第四个元素开始(含第四个)的子列表,即[3, 4, 5, 6, 7, 8, 9]
#c为从a第一个元素开始 ,至倒数第三个元素(不含)的子列表 ,即[0, 1, 2, 3, 4, 5, 6]
#d列表的元素为a中3的倍数的元素的2倍,即[0, 6, 12, 18]
上面的几行代码看起来很直观 ,而且也很强大 。其中第10行使用到了python的列表推导(list comprehension) ,第12行使用到了reduce和lambda 。
Python对于我而言 ,工作上主要是用来做各种页面抓取和分析 ,确实非常舒服。有时候还会用它来做一些日常生活中的事 ,例如给我刚上小学的儿子出题 ,让他从小就知道有一个程序员老爸的优势 。下面是一道组词成句的题:
import random</p> <p>s = u我 打开 柜子 拿出 杯子 打水 喝’.split()<br /> random.shuffle(s)<br /> for _ in s: print _
还有的时候出一些随机加减题来增加他的根骨 ,要不就是用matplotlib来画一些图给某些商业人士看 ,等等 。
我常用的Python包都在这里有描述 ,其中也包括了其他的常用软件 。最常用的可能就是lxml.html库了 ,用来处理网页非常方便 ,简单的处理5行搞定:
html
当然,Python也有很多缺点 ,在中国Python讨论区里不久前还讨论了一下 ,就在这个帖子里 。Pythoner们怨念值爆棚,比如:
字符串编码 。对于中国人来说 ,字符串编码问题永远令人头痛 ,因为各系统都有自己的缺省编码 ,各OS的终端 ,各OS的文件系统 ,各网站的网页 ,各数据库的编码 ,各代码文件的编码 ,各数据文件与配置文件的编码…. 并发与性能 。CPython本身的性能有待提高 ,而Python的GIL众所周知 ,伪多线程使得Python程序无法有效地利用多核系统的优势提高性能 ,也许只能采用多进程模型 ,greenlet,gevent ,stackless python等框架或PyPy等非CPython的实现了 客户端发布 。把Python程序发布给没有安装Python环境的用户很麻烦 ,虽然py2exe可用,但是非常大 ,而且可能有遗漏 ,另外GUI实现也有不少性能上的问题 接口规范不一致 。骆驼命名法 ,下横杠命名法 ,都小写命名法 ,大写开头 ,小写开头 ,看起来乱 标准库有的有错 ,有的过时了 …不过还是推荐大家多试试Python ,虽然它有上述的缺点 ,但是作为原型开发语言 ,运维脚本工具 ,还有Web后端语言来说,都是很棒的 。
PS一下 ,python内建一个非常简单的HTTP服务模块 。如果你想临时传文件给别人 ,可以在文件的目录下运行python -m SimpleHTTPServer,这样就在本地建立了一个端口为8000的HTTP服务 ,根目录为本目录 ,这样用wget/curl之类的软件很快就把文件下载过来了 。
再PS一下 ,我就用python做了一个正文提取+小说下载的软件 ,自我感觉还成 ,源代码在这里 。下面是正文提取测试程序的部分运行结果:
网易新闻的提取结果 D版小说的提取结果 Stack Overflow的提取结果 猫扑的提取结果 天涯的提取结果 博客的提取结果 论坛的提取结果下面是小说下载测试程序运行的结果:
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!