zoukankan      html  css  js  c++  java
  • About Python(转)

    准备

    版本选择

    • 第一个话题是版本选择,是为了确定一下我们从哪里开始。我们主要使用 CPython(2.7.x)—— 最常见的发行版
    • 如果有机会做 lucene / hadoop / hbase 这些 Java 界工具的相关工作,可以使用 Jython(运行于 JVM 中,Java 和 Python 的混搭),性能和易用性都不错。
    • 如果愿意深入研究 Python 实现,或者求高性能 & 好玩,可以鼓捣一下 PyPy
    • Python 3 看起来更合理,为什么没使用 Python 3? 因为下文提到的一些好玩好用的工具在 Python 3 中还没有被全面支持

    编译

    • 如上所述,我们使用 CPython。常见的 C 源码安装方法: ./configure --prefix=<your-path> && make && make install

    包管理 & 源

    • 包管理使用 pip。
      为什么不是 setuptools?因为无卸载
      为什么不是 virtualenv? 这个更科学,可以自己搞,但我们用 Python 多数是“玩”,不必这么严肃
      btw: 我自己使用 ArchLinux,使用操作系统自身的包管理工具(pacman & yaourt)比 Python 的貌似更方便,如果你和我一样,欢迎这样搞
    • 官方源不是被墙就是速度慢,这时我们可以自己指定源,比如指定 V2EX 的源:pip install flask -i http://pypi.v2ex.com/simple。类似的还有豆瓣、清华等源。使用的时候默默的感谢他们一下

    辅助工具

    • ipython 或 bpython 或 Python 自己的 repl,用来快速的“试”代码,Python 常用函数、数据结构什么的非常符合直觉,很多东西试一下就行了~

    注意事项

    • 我们的服务器是 CentOS,默认镜像中 Python 依赖工具可能不全,这会导致安装 Python 失败或者安装成功后某些标准库运行不正常,这个时候需要 yum install aaa bbb ccc 后重新编译安装一下
    • Python 在酒店搜索 & QHotel 方面主要用于辅助 Java 世界的东西和一些小工具。无人帮助 QA 和运维,需要自己保证质量
    • 以上 & 以下提到的关键词,如 pip 之类,如果此一次见,请 search google,浏览一眼官方文档,如果有时间请实际操练一下 hello world

    主要应用点

    数据导来导去

    • 经常会有产品经理找到开发要数据,酒店的数据来源一般有:MySQL、PostgreSQL、磁盘上日志、HDFS上日志或表
    • MySQL 的数据需要用到 Python 连接 MySQL 模块,我个人使用的是 PyMySQL,其他的还有 MySQLDB 之类的,连接 PostgreSQL 我个人使用 Pyscopg2
    • HDFS 上的表或文件一般都用 Hadoop Shell 的命令,拉取到本地形成文本文件,和本地磁盘日志等同处理
    • 导数据一般都需要 join、统计、排序什么的,这个时候要灵活运用 Python 的标准数据结构:dict、list、set 等(这一点对于初学者必须多做几次才有体会)
    • Python 处理数据在环境完备的情况下出代码很快。Python 各种数据访问模块不如 JDBC 那样一致,但是结果集可以很方便的转化成 dict,代码简洁得多
    • 如果涉及到多个 / 多种数据源,各种机器,难以申请各种互访环境,在这种条件下导数据,需要使用到下文的 Fabric

    文本处理

    • 字符串处理,Python 中有很多便捷的的字符串处理方法,并且字符串本身也是 list,这方面看书读文档吧
    • 正则表达式,Python 中没有正则类型,使用的是字符串,这个和 SQL 一样,都是语言本身之外的功夫
    • json,标准库里的 json 对于一般需求(处理接口数据,自动化测试对比 ...)来说就够了,可以和 dict 互转。说这个要比 Java 中简洁几十倍并不夸张。标准库中的 json 在我看来有一点不是很方便:对于非标准的 json(属性不带双引号 or 其他 js 引擎能正确识别的情况),这种情况还是使用 nodejs 里面的命令行工具好了
    • xml,标准库里面的 ElementTree 对于一般需求来说就够了,我们这里在接口方面一般不使用 XML,XML 一般用在(热发布)配置文件。和 XML 有关的 bug、故障、delay 因素什么的已经有好几起了,因此,对于开发来说,熟练的掌握这个是必要的,可以用来生成配置文件数据、检查节点和数据完整性、检查编码、查找替换等
    • 自然语言处理,用 Python 写个 trie 只需数十行代码,用来做个简单的词典分词、转拼音什么的很方便。NLP 这方面话题比较大,有专门的书介绍这个,以后有机会共同学习

    运维

    • fabric,在Q有个神器叫 atnodes —— 批量 ssh 工具(作者之一是万珣新万大师,perl 写的),Python 世界里有好几个和这个对应的东西,我用过最好用并认为最有前途的是 fabric,可以批量运行 ssh、上传下载、脚本化运行方面结合 Python 代码,清晰明了。从其 roadmap 可以看出有打造 Python 世界中 rake 和 chef 的趋势。fabric 在哪儿执行最方便?当然是跳板机啦~
    • supervisor,类似 systemd、daemontools等,Python 世界中的进程管理工具,用于启动 nginx,Python 脚本,flask web应用、gunicorn 等。纯 Python 实现,有需要进程管理的就交给它吧

    算法 & 机器学习

    • numpy,用来做数值计算,Python 的简洁语法在这里体现非常明显
    • scikit-learn,主流机器学习算法在这里都有,并且统一接口,易于上手,对着教材写个 hello world 什么的至少是很快的,别的不说,官方文档图文并茂,帅呆了
    • Matplotlib,数据可视化,代码和图图都漂亮的就靠这个了

    web

    • flask,Servlet 写烦了有木有,Spring 太重了有木有,Jsp 一坨一坨太磕碜了有木有,Java 搭个环境一闭眼一睁眼一星期过去了有木有。试试 flask,分分钟出 demo

    小工具

    • requests,数据抓取用这个很方便,它的 slogan 是 HTTP For Human Beings,言外之一是啥,其他库不是给 Human Beings 用的~
    • gevent,代码执行太慢?一般是阻塞了,gevent 基于 libev,提供类似协程的执行体,加上非阻塞 IO 模型,最潮的“并发”执行方式
    • pyparse,自己写个 JSON diff 工具,自己写个 Hive SQL Code Formatter 什么的,顺便复习(重学、入门)一下编译原理
    • pyXXX,和码农有关的 tag 前面加个 py 后搜一下,一般都会有个玩意儿,比如 pySVN 什么的,能干什么?发挥自己的想象力好了~

    资料推荐

    以下是在 Python 方面我收集的一些电子书,我也没有完全读完,但这些还都不错,有兴趣的话欢迎交流

    • Beginning.Python.pdf
    • byte.of.python.30.pdf
    • Core.Python.Applications.Programming.3rd.pdf
    • Data.Structures.and.Algorithms.in.Python.pdf
    • Data.Structures.and.Algorithms.Using.Python.pdf
    • diveintopython.pdf
    • diveintopython3.pdf
    • Expert.Python.Programming.pdf
    • Fundamentals.of.Python--From.First.Programs.through.Data.Structures.pdf
    • Generators.pdf
    • Getting.Started.with.Pyparsing.pdf
    • Head.First.Python.pdf
    • How.to.Think.Like.a.Computer.Scientist--Learning.With.Python.pdf
    • Introduction.to.Computer.Science.Using.Python.pdf
    • Learning.Python.4th.pdf
    • Learning.Python.5th.pdf
    • Matplotlib.for.Python.Developers.pdf
    • NLP.with.Py.pdf
    • NumPy.Beginners.Guide.2nd.pdf
    • NumPy.Cookbook.pdf
    • pandas.pdf
    • Programming.Computer.Vision.with.Python.pdf
    • Py.Cookbook.chm
    • PyPy.in.Production.pdf
    • Python+学习笔记+第二版.pdf
    • python-guide.pdf
    • Python.Algorithms.pdf
    • Python.Cookbook.3rd.pdf
    • Python.for.Data.Analysis.pdf
    • Python.for.Everyone.pdf
    • Python.for.Unix.and.Linux.System.Administration.pdf
    • Python.Testing.Cookbook.pdf
    • Scipy.and.Numpy.pdf
    • The.Python.Standard.Library.by.Example.pdf
    • Think.Python.pdf
    • Thinking.In.Python.pdf
    • Violent.Python.pdf
    • 用Python做科学计算.pdf

    心得

    • 以上提到这些东西是一年多以来我在酒店 Python 方面鼓捣过的东西,多数都是浅尝辄止,但是很有乐趣
    • 有问题先 search the f^cking web & read the f^cking manual
    • 官方文档、华蟒邮件列表、stackoverflow 多看看。其他 nodejs、ruby 社区也没事儿逛逛,这些生态系统中的好东西一般都可以和 Python 一比一翻译
    • 有些问题一定是要自己经历亲身经历一下才知道以后如何解决的,比如丢失依赖、乱码、第三方库的烂坑等。遇到这些问题时,如果时间上有余地,可以深挖一下
    • 标准库不给力(不强大,不好用)的情况下一般会有个第三方包,比如 requests,还有日期处理之类的(Java 和 Python 的日期、时间处理的标准库都不好用)
      • 其他生态系统中好东西在 Python 世界一般都会有一份包装,比如 PyLucene(Lucene)、Gevent(Libev),PyLibpcap(Libpcap),PyWebkit(webkit)等

     

  • 相关阅读:
    闪回flashback
    Oracle数据文件在open状态被删除的恢复记录
    从浅到深掌握Oracle的锁
    Oracle 11g 11201_RHEL5.5_RAC_VBOX 详细搭建步骤
    AWR Report 关键参数详细分析
    16、Xtrabackup备份与恢复
    17、percona-toolkit
    插入排序
    选择排序
    冒泡排序
  • 原文地址:https://www.cnblogs.com/ranger-cc/p/3441234.html
Copyright © 2011-2022 走看看