版本1和212间的区别 (跳过第211版)
于2005-12-18 21:39:31修订的的版本1
大小: 441
编辑: czk
备注:
于2020-06-05 17:12:03修订的的版本212
大小: 13103
编辑: czk
备注:
删除的内容标记成这样。 加入的内容标记成这样。
行号 1: 行号 1:
学习资料
 * [http://diveintopython.org/ Dive Into Python(较老的版本有中文翻译)]
 * [http://www.python.org/ Python官方站点]
 * [http://python.cn/ Python中文社区]
 * [http://groups.google.com/group/comp.lang.python Python讨论组comp.lang.python]
 * [http://www.ibiblio.org/obp/thinkCSpy/ How to Think Like a Computer Scientist (Learning with Python)]
 * [http://pine.fm/LearnToProgram/ Learn to Program]
 
= Python =

<<TableOfContents>>

 * [[Python介绍]]

== Python入门教程 ==

 * Python教程:[[Python游戏开发基础]]
 * [[https://stackify.com/learn-python-tutorials/|30个不同的Python入门网站]]
 * [[https://developers.google.com/edu/python|Google's Python Class]]
 * [[https://blog.jetbrains.com/blog/2020/03/05/jetbrains-academy-python/|Learn Python with JetBrains Academy!]]
 * [[https://docs.python.org/3/tutorial/|Python Tutorial]]
 * [[https://diveintopython3.problemsolving.io/|Dive Into Python 3]] ([[https://woodpecker.org.cn/diveintopython3/|中文版]])
 * [[https://python.swaroopch.com/|A Byte of Python]] (中文版: [[https://bop.mol.uno/|简明Python教程]])
 * [[https://en.wikibooks.org/wiki/Python_Programming|Python Programming - Wikibooks]]
 * [[https://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_3|Non-Programmers Tutorial For Python]]
 * [[https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lecture-videos/|MIT 6.0001 Introduction to Computer Science and Programming in Python]]
 * [[http://openbookproject.net/thinkcs/python/english3e/|How to Think Like a Computer Scientist (Learning with Python 3)]]
 * [[http://xahlee.info/python/index.html|Python by Example]] by Xah Lee
 * [[http://www.alan-g.me.uk/l2p/|Learn to Program by Alan G]]
 * [[https://inventwithpython.com/|Invent with Python]]
 * [[http://chinesepython.org/pythonfoundry/easytut.html|Python 非編程員教學]]
 * [[http://www.norvig.com/python-lisp.html|Python for Lisp Programmers]]

已经过时的教程(基于已经淘汰的Python 2):

 * 另类的Python教程: [[attachment:我的名字叫Python.pdf]] (太古老,已过时)
 * [[http://www.wag.caltech.edu/home/rpm/python_course/|Python Short Course]] by Richard P. Muller (太古老,已过时)
 * [[https://github.com/livewires/python/releases|The LiveWires Python Course]] 已过时
 * [[http://www.pentangle.net/python/handbook/|Handbook of the Physics Computing Course]] 已过时
 * [[http://www.math.pku.edu.cn/teachers/lidf/docs/Python/python-tutorial.html|Python入门]]

== Python解释器 ==
 * CPython http://python.org/
 * Stackless Python http://www.stackless.com/
   * [[StacklessPython]]
 * Ironpython (Python for .Net) https://ironpython.net/
 * Jython (Python for Java) https://www.jython.org/
 * [[https://www.pypy.org/|PyPy]]
   * [[https://speed.pypy.org/|PyPy Speed]]
 * [[http://hylang.org|Hylang]] A dialect of Lisp that's embedded in Python

== Python开发环境 ==
 * Mac上Python环境准备: https://sourabhbajaj.com/mac-setup/Python/
 * [[http://hkn.eecs.berkeley.edu/~dyoo/python/idle_intro/index.html|One Day of IDLE Toying]] (中文版: [[http://hkn.eecs.berkeley.edu/~dyoo/python/idle_intro/IDLE-chinese.htm|摆弄一天IDLE]])
 * [[http://ftp.ntua.gr/mirror/python/idle/doc/idle2.html|Using IDLE]] by Daryl Harms
 * [[https://docs.python-guide.org/dev/virtualenvs/|Pipenv & Virtual Environments]]
 * [[https://hackernoon.com/reaching-python-development-nirvana-bb5692adf30c|Why you should use pyenv + Pipenv for your Python projects]]
 * [[https://pipenv.pypa.io/en/latest/advanced/|Advanced Usage of Pipenv]]
 * [[https://python-poetry.org/|poetry]]
 * [[https://github.com/David-OConnor/pyflow|pyflow]]
 * [[https://github.com/ofek/hatch|hatch]]
 * [[https://github.com/takluyver/flit|flit]]
 * [[https://briefcase.readthedocs.io/en/latest/|briefcase]]
 * [[http://andrewsforge.com/article/python-new-package-landscape/|Python's New Package Landscape]]
 * [[https://www.pypa.io/en/latest/|PyPA]]
 * [[https://github.com/pypa/warehouse|warehouse]]


== Python语法 ==

 * [[http://en.wikipedia.org/wiki/Python_syntax_and_semantics|Python语法]] from Wikipedia
 * [[https://docs.python-guide.org/writing/gotchas/|Python Gotchas]]
 * [[https://towardsdatascience.com/30-python-best-practices-tips-and-tricks-caefb9f8c5f5|30 Python Best Practices, Tips, And Tricks]]
 * [[https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/|Python yield 使用浅析]]
 * [[https://python-future.org/compatible_idioms.html|Cheat Sheet: Writing Python 2-3 compatible code]]
 * [[https://mypy.readthedocs.io/en/stable/cheat_sheet_py3.html|Type hints cheat sheet (Python 3)]]
 * [[https://docs.python.org/3/reference/index.html|Python Reference Manual]]
 * [[https://realpython.com/async-io-python/|Async IO in Python: A Complete Walkthrough]]
 * [[https://snarky.ca/how-the-heck-does-async-await-work-in-python-3-5/|How the heck does async/await work in Python 3.5?]]
 * [[https://rhettinger.wordpress.com/2011/05/26/super-considered-super/|Python’s super() considered super! ]]
 * [[https://docs.python.org/3/library/asyncio-task.html|Coroutines and Tasks]]
 * [[https://www.python.org/dev/peps/pep-0492/|PEP 492 -- Coroutines with async and await syntax]]


== 代码风格 ==

 * [[https://www.python.org/doc/essays/styleguide/|Python Style Guide]]
 * https://www.python.org/dev/peps/pep-0008/
 * https://www.python.org/dev/peps/pep-0257/
 * [[https://docs.python-guide.org/writing/style/|Code Style -- The Hitchhiker's Guide to Python]]
 * [[https://www.jeffknupp.com/blog/2013/08/16/open-sourcing-a-python-project-the-right-way/|Open Sourcing a Python Project the Right Way]]

== 参考资料 ==

 * [[Why Python is More Productive than Java]]
 * awesome python https://github.com/vinta/awesome-python
 * [[http://www.linuxjournal.com/article/3882|Why_Python]] by Eric Raymond [[http://blog.sina.com.cn/s/blog_53982851010008b8.html|why python中文版]]

 * [[https://woodpecker.org.cn/|WoodPecker中文社区]]
 * [[https://www.reddit.com/r/programming/comments/eroi/of_snakes_and_rubies_or_why_i_chose_python_over/|Of snakes and rubies; Or why I chose Python over Ruby]]
 * [[http://www-128.ibm.com/developerworks/cn/linux/theme/special/index.html#python|ibm上的python专题]]
 * [[http://www.hetland.org/python/instant-hacking.php|Instant Hacking]] and [[http://hetland.org/python/instant-python.php|Instant Python]]
 * [[http://wiki.python.org/moin/Intro_to_programming_with_Python_and_Tkinter|Intro to programming with Python in Tkinter(Video Lesson)]]

 * [[http://www.onlamp.com/pub/a/python/2002/10/17/biopython.html|Beginning Python for Bioinformatics]]
 * [[http://www.pasteur.fr/recherche/unites/sis/formation/python/|Python course in Bioinformatics]]
 * [[http://www.pasteur.fr/formation/infobio/python/|Introduction to Programming using Python]]
 * [[http://gvr.sourceforge.net/|The Guido van Robot]]
 * [[http://www.linuxjournal.com/article/3946|Python Programming for Beginners]]
 * [[http://www.rexx.com/~dkuhlman/python_101/python_101.html|Python 101 -- Introduction to Python]] [[http://www.rexx.com/~dkuhlman/python_201/python_201.html|Python 201 -- (Slightly) Advanced Python Topics]]
 * [[http://www.ifi.uio.no/in228/lecsplit/|Scripting for Computational Science]]
 * [[http://starship.python.net/crew/hinsen/|Python for Science]]
 * [[http://www.codeteacher.com/category.php?ID=8|Code Teacher]]
 * [[http://groups.google.com/group/comp.lang.python|Python讨论组comp.lang.python]]
 * [[http://pine.fm/LearnToProgram/|Learn to Program(ruby)]]
 * [[https://www.sitepoint.com/community/t/article-10-time-saving-tips-for-pythonists/197722|10 Time-saving Tips for Pythonists]]
 * [[https://docs.python.org/3.1/howto/advocacy.html|Python_Advocacy_HOWTO]] by A.M. Kuchling
 * Learning to Program: attachment: http://www.freenetpages.co.uk/hp/alan.gauld/
 * Learn To Program CD: [[attachment:LearnToProgramCD.zip]]
 * Tkinter Life Preserver: http://www.python.org/doc/life-preserver/
 * [[https://archive.org/details/SeanKellyRecoveryfromAddiction|Recovery from Addiction]]
 * [[https://www.zhidaow.com/post/python-modules-you-should-know|Python你必须知道的十个库]]
 * [[http://www.pythontip.com/blog/post/9771/|【外刊IT评论网】Python高效编程技巧]]
 * [[http://blog.sina.com.cn/s/blog_4e8581890102e29u.html|孩子们为什么要学Python编程?]]
 * [[https://pythonconquerstheuniverse.wordpress.com/2009/10/03/python-java-a-side-by-side-comparison/|Python & Java: A Side-by-Side Comparison]]
 * [[https://book.douban.com/subject/1241032/|Jython程序设计]]
 * [[https://lists.ubuntu.com/archives/ubuntu-devel/2020-February/040918.html|Python2 removal for Ubuntu focal]]
 * [[https://app.getpocket.com/read/2956522352|Python 2.7.18, the end of an era]]
 * [[http://python-future.org/|Easy, clean, reliable Python 2/3 compatibility]]
 * [[https://computers-are-fast.github.io/|Do you know how much your computer can do in a second?]]
 * [[https://medium.com/@jherreras/python-microlibs-5be9461ad979|Python Microlibs]]

== Python库 ==

=== 标准库 ===

 * [[http://docs.python.org/lib/lib.html|Python Library Reference]]

=== GUI Toolkit ===

 * wxpython http://www.wxpython.org/
 * [[PyGtk]]
 * [[https://kivy.org/|Kivy]] 基于OpenGL ES的移动端、桌面端GUI开发库
 * 使用PyQt编写QT图形界面程序 http://www.riverbankcomputing.co.uk/pyqt/
 * [[https://machinekoder.com/pyqt-vs-qt-for-python-pyside2-pyside/|PyQT vs PySide2]]

=== DB ===

 * [[https://elasticsearch-dsl.readthedocs.io/en/latest/|ElasticSearch DSL]]

=== 网络 ===

 * [[https://github.com/MagicStack/uvloop|uvloop]]: asyncio + libuv + Cython,再配上httptools做HTTP parser,从[[https://magic.io/blog/uvloop-blazing-fast-python-networking/|benchmark]]看起来性能非常强劲。

=== Web 开发 ===

 * [[Django]]
 * [[https://wiki.python.org/moin/WebProgramming|WebProgramming - Python Wiki]]
 * Flask: https://flask.palletsprojects.com/en/1.1.x/
 * [[https://www.youtube.com/watch?v=DWODIO6aCUE|Better Web App]]

=== Windows ===
 * pywin32 http://sourceforge.net/projects/pywin32/
 * comtypes http://starship.python.net/crew/theller/comtypes/
 * python 与 COM [[http://oreilly.com/catalog/pythonwin32/chapter/ch12.html|Advanced Python and COM]]
 * 使用_winreg模块操纵windows注册表
 * 将python程序打包成windows下可以执行的exe文件:使用[[http://www.py2exe.org/|py2exe]]模块
 * 在.net平台上使用python:[[http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=ad7acff7-ab1e-4bcb-99c0-57ac5a3a9742|IronPython]]

=== Mac ===
 * [[http://undefined.org/python/py2app.html|Py2app]]

=== 多媒体 ===

 * 图像获取:linux平台下使用sane模块,Windows平台下使用twain模块
   * [[http://twainmodule.sourceforge.net/|TWAIN]]
 * 图像处理[[PythonImageLibrary中文手册]]
 * 通过ffmpeg处理视频、音频 https://github.com/kkroening/ffmpeg-python
 * PyDUB:在python中直接处理音频 https://github.com/jiaaro/pydub

=== 游戏 ===
 * pygame: http://www.pygame.org/
   * [[Pygame]]
 * panda3d: http://www.panda3d.org/
 * renpy: http://www.renpy.org/wiki/renpy/Home_Page
 * pyopengl http://pyopengl.sourceforge.net/

=== 字符串 ===

 * [[https://docs.python.org/3/howto/unicode.html|Unicode Howto]]
 * http://docs.python.org/lib/module-re.html
 * http://www.amk.ca/python/howto/regex/
 * Mastering Regular Expressions 2nd Edition, By Jeffrey E. F. Friedl
 * [[https://click.palletsprojects.com/en/7.x/|Click]] 命令行参数处理

=== 数据处理 ===

 * [[https://numpy.org/|numpy]]
 * [[https://www.scipy.org/|scipy]]
 * [[https://radimrehurek.com/data_science_python/|Practical Data Science in Python]]
 * [[https://pytorch.org/|PyTorch]]
 * [[https://scikit-learn.org/stable/|Scikit-Learn]]

=== 其它 ===
 * python-ldap http://www.python-ldap.org/
   * [[PythonLdap]]
 * 读取excel:用xlrd包。把excel转成csv,使用csv库操作。
 * 加密:Python Cryptography Toolkit http://www.amk.ca/python/code/crypto
 * [[http://springpython.webfactional.com/|Spring Python]]: 为什么Python不需要像Spring这样的东西?
 * [[http://www.dabeaz.com/ply/ply.html#ply_nn2|PLY]] Python Lex-Yacc

== Python的字符编码处理 ==

对于中文用户,特别需要关注Python的编码技术. 列举一些常用的技巧。

{{{
chr(i): 将一个0到255的整数转换为一个字符.
ord(c): 返回单个字符c的整数顺序值.普通字符返回[0,255]中的一个值,Unicode字符返回 [0,65535]中的一个值
unichr(i): 将一个0到65535的整数转换为一个Unicode字符
}}}

    * 代码中的编码设置,应该在代码最初两行内包含:
{{{
# -*- coding: UTF-8 -*-
}}}
    * 获得/设置系统的缺省编码
{{{
sys.getdefaultencoding()

sys.setdefaultencoding('utf-8')
}}}
    * 获得文件系统的文件名的编码
{{{
sys.getfilesystemencoding()
}}}
    * 获得当前终端的输入、输出编码
{{{
      sys.stdout.encoding

      sys.stdin.encoding
}}}
    * 编码转换(先转换为unicode,再转换为具体的编码),有两种方法:
{{{
      unicode('abc', 'mbcs').encode('utf-8')

      'abc'.decode('mbcs').encode('utf-8')
}}}

 * [[Python代码片段]]

Python

1. Python入门教程

已经过时的教程(基于已经淘汰的Python 2):

2. Python解释器

3. Python开发环境

4. Python语法

5. 代码风格

6. 参考资料

7. Python库

7.1. 标准库

7.2. GUI Toolkit

7.3. DB

7.4. 网络

  • uvloop: asyncio + libuv + Cython,再配上httptools做HTTP parser,从benchmark看起来性能非常强劲。

7.5. Web 开发

7.6. Windows

7.7. Mac

7.8. 多媒体

7.9. 游戏

7.10. 字符串

7.11. 数据处理

7.12. 其它

8. Python的字符编码处理

对于中文用户,特别需要关注Python的编码技术. 列举一些常用的技巧。

chr(i): 将一个0到255的整数转换为一个字符.
ord(c): 返回单个字符c的整数顺序值.普通字符返回[0,255]中的一个值,Unicode字符返回 [0,65535]中的一个值
unichr(i): 将一个0到65535的整数转换为一个Unicode字符
  • 代码中的编码设置,应该在代码最初两行内包含:

# -*- coding: UTF-8 -*-
  • 获得/设置系统的缺省编码

sys.getdefaultencoding()

sys.setdefaultencoding('utf-8')
  • 获得文件系统的文件名的编码

sys.getfilesystemencoding()
  • 获得当前终端的输入、输出编码

      sys.stdout.encoding

      sys.stdin.encoding
  • 编码转换(先转换为unicode,再转换为具体的编码),有两种方法:

      unicode('abc', 'mbcs').encode('utf-8')

      'abc'.decode('mbcs').encode('utf-8')

Python (2020-06-05 17:12:03由czk编辑)

ch3n2k.com | Copyright (c) 2004-2020 czk.