Python入门、基础书籍简评与推荐

本文对Python网友讨论较多的几本基础入门书籍做个简评,给新手朋友们一个参考。本文仅代表阿驹的个人对它们的意见,不一定完全正确,但站在阿驹的角度看来,是很中肯的。

《简明Python教程》

  • 英文原版名为《A Byte of Python》。它非常简明扼要地介绍了Python语言基础的各个方面。
  • 适合群体:
    1. 仅仅临时使用Python的新手,非专业性地临时运用十来行简单代码就能自动化处理一些工作。
    2. 非常熟练编程的老手,深谙编程本质,换语言不过是换工具而已,通过简要地提点,其他诸多方面自然通晓,辅以浏览官方文档和《Python Cookbook》此类书籍,就和Python熟手无异。

      阅读全文

简单明了地选择Python GUI库

可用于Python GUI程序开发,优秀且更新“跟得上时代”的库有 wxPythonPyQT(PySide)、KivyLibavg ,当然还有 Python 内置的 Tkinter 。像 PyGUI 、PyGTK 、PySWT 等,由于上次更新距现在太为久远且文档、学习资料、稳定性等诸多考虑,阿驹认为它们并不适合于开发一个正式的项目,就不作介绍。

各种 Python GUI 库简介

1. wxPython

  • 跨平台,Windows / Unix / unix-like / OS X
  • 包装的是 wxWidgets,C++写成的
  • 完全开源,可以任意用于自己的开源或商业项目
  • 不支持 Python3.x (新启了一个名为 Phoenix 项目,支持 Python 3.x,尚未正式发布)
  • 学习资料《wxPython in Action》、《wxPython 2.8 Application Development Cookbook》,均有中文版
  • 有第三方提供的图形化界面设计工具,但还是有瑕疵,不如PyQT的强大
  • 看起来非常本地化地界面

    阅读全文

Python web 加密下载链接的实现

需求背景

文件上传下载绝对是Web攻防中一个重要的突破口。网络安全日益受重视的今天,web开发中除了要对文件上传进行严格的权限控制,文件下载亦是如此。不可随意暴露服务器端信息,以及用户信息。
其他技术栈的网站也可以作参考。

实例

设有银行网站 WEB_SERVER , 另有银行每月交易流水日志文件服务器 LOG_SERVER , 用户在 BANK_WEB 的 “个人中心” 里可以 “下载流水日志”。
用户点击 “下载流水日志” 后,选择想要流水日志的年月,WEB_SERVER 返回的是一个加密的下载链接,此链接可以由浏览器当时执行,也可放在下载工具中下载。也有如下安全性要求。

  • 用户无法构造文件的URL
  • 不直接暴露文件的绝对路径
  • 开始下载之前不暴露文件名
  • 可以进行权限控制,无权限者无法下载
  • 下载链接有过期时间
  • 还可以实现其他你可以想到的功能
  • 文件下载服务器只需提供文件,无须管理用户信息

    阅读全文

修复pip升级后pip与pip3命令均安装三方包至python3目录下

状况描述

目前安装好较新的 Linux 发行版后,系统默认已经安装好了 python2 与 python3 。有时,也需要在这两种 python 环境下方便地安装python包。而根据 pip的安装文档 安装好了pip以后,默认情况下是安装在python2下面的(因为Linux默认的python版本是2)。

然而我们再执行 python3 get-pip.py 来为 python3 装好pip后,我们发现如下情况:

1
2
3
4
5
6
$ pip -V
pip 7.1.2 from /usr/local/lib/python3.4/dist-packages (python 3.4)
$ pip3 -V
pip 7.1.2 from /usr/local/lib/python3.4/dist-packages (python 3.4)
$ pip2 -V
pip 7.1.2 from /usr/local/lib/python2.7/dist-packages (python 2.7)

阅读全文

git合并多个提交commits

阿驹的工作和个人项目都使用Git作为版本控制工具。与Subversion相比,Git更具Geek范,熟练之后感觉灵活强大。

在我们针对某个功能多次commit提交代码以后,很可能会希望将这多个commit合并为一个,再向master分支提MR(Merge Request, GitLab这样称呼;Github称为Pull Request)。

阅读全文

字符编码及Python中文处理精解

本文目的

为 Python 程序员简练地介绍字符编码相关支持,彻底解疑“ Python 中文乱码”,“ Python 2与 Python 3 字符编码差异”等相关问题。使用其他语言的程序员可作参考,道理都是相通的,不过具体处理方式不同罢了。

痛苦的根源

  • 起因
    计算机不能直接识别字符(文本的最小组成单位)。

    • 字形:
      字的形状,又叫字图。文字的抽象形状,“小短横线”就是汉字“一”的字形。
    • 字符:
      抽象符号和数字成对编码用于在计算机系统中表示的信息单位。虽然字符本身是抽象的,但它一旦存在于计算机系统中,它就对应了某种特定字符编码方式。字符“一”在GBK编码中是0xD2BB。
    • 字体:
      字的形体。草书、行书、楷书,都叫字体。计算机中的字体如:华文行楷,微软雅黑。
  • 解决办法
    但是计算机可以识别二进制数,于是采用一个二进制数来指代一个字符

    阅读全文

Python是编译型还是解释型语言?与Java有何不同?

前段时间有几个人在群里争论Java和Python是编译型还是解释型语言。阿驹在这里谈谈自己的看法。
毕竟作为曾经的Java程序员,猿!

广而告之: 学习Python的同学可以加QQ群249708924,或者搜索细学Python即可申请加入。

以下探讨建立在标准Java、CPython的基础上, 不讨论PyPy等。

先说结论

Java既是解释型也是编译型,CPython是解释型。

阅读全文

Python编码最佳之最佳实践


总体的

价值观

  • 把你为自己构建的工具贡献给别人
  • 简单性通常比功能性更好
  • 解决90%的情况,忽略唱反调的
  • 优雅胜于丑陋
  • 构建开源代码(哪怕是为了闭源项目)

通用开发准则

  • 显式优于隐式
  • 重视可读性
  • 任何人都可以解决任何问题
  • 一旦破窗(糟糕的设计、错误的决定、丑陋的代码)被发现就尽快修复它们

    阅读全文

附加应用接入微信第三方平台解决方案


附加应用的类型

1. 插件型

开发者根据三方平台提供的交互接口/函数/方法,完成一款插件,将代码提交至三方平台审核,审核通过后三方平台将插件代码安装至平台项目中运行,供微信运营者使用。

  • 远程接口型
    插件只需要接收微信粉丝发来的消息,将消息包装为接口要求的格式,向接口发起请求,得到接口返回数据并解析组装为微信要求格式发送给用户。
  • 本地代码型
    插件自身实现相关功能并返回结果给用户。

2. 独立系统型(CRM/ERP等)

根据运维方的不同,分为如下三种形式:

阅读全文