版本27和112间的区别 (跳过第85版)
于2006-06-10 19:00:15修订的的版本27
大小: 17673
编辑: czk
备注:
于2020-03-31 14:35:36修订的的版本112
大小: 5292
编辑: czk
备注:
删除的内容标记成这样。 加入的内容标记成这样。
行号 1: 行号 1:
[[TableOfContents]]
= Python语言 =
= Python =
行号 4: 行号 3:
== 总览 ==  * Python教程:[[Python游戏开发基础]]
 * [[StacklessPython]]
 * [[Python小程序]]
 * [[Python使用技巧]]
 * [[Python相关软件]]
 * [[Python介绍]] from Wikipedia
 * [[https://stackify.com/learn-python-tutorials/|30个不同的Python入门网站]]
行号 6: 行号 11:
Python is an interpreted programming language created by Guido van Rossum in 1990. Python is fully dynamically typed and uses automatic memory management; it is thus similar to Perl, Ruby, Scheme, Smalltalk, and Tcl. Python is developed as an open source project, managed by the non-profit Python Software Foundation, and is available for free from the project website. Python 2.4.3 was released on March 29, 2006. == 参考资料 ==
行号 8: 行号 13:
||Paradigm编程范式:||Multi-paradigm多范式||
||Appeared in出现时间:||1990||
||Designed by设计者:||Guido van Rossum||
||Developer开发者:||Python Software Foundation||
||Latest release最后发布时间:||2.4.3 / March 29, 2006||
||Typing discipline类型规则:||Strong, dynamic ("duck")||
||Major implementations主要实现:||CPython, Jython, IronPython, PyPy||
||Influenced by受哪些语言影响:||ABC, Modula-3, Icon, C, Perl, Lisp, Smalltalk, Tcl||
||Influenced影响了哪些语言:||Ruby, Boo||
||OS操作系统:||Cross-platform||
||License许可证:||Python Software Foundation License||
||Website网站:||www.python.org||

== duck typing ==
In computer science, duck typing is a term for dynamic typing typical of some programming languages, such as Smalltalk or Visual FoxPro, where a variable's value itself determines what the variable can do. It also implies that an object is interchangeable with any other object that implements the same interface, regardless of whether the objects have a related inheritance hierarchy.

The term is a reference to the "duck test"—"If it walks like a duck and quacks like a duck, it must be a duck." One can also say that the duck typing method ducks the issue of typing variables.

Pythonic programming style that determines an object's type by inspection of its method or attribute signature rather than by explicit relationship to some type object ("If it looks like a duck and quacks like a duck, it must be a duck.") By emphasizing interfaces rather than specific types, well-designed code improves its flexibility by allowing polymorphic substitution. Duck-typing avoids tests using type() or isinstance(). Instead, it typically employs hasattr() tests or EAFP [Easier to Ask Forgiveness than Permission] programming.

The standard example of duck typing in Python is file-like classes. Classes can implement some or all of the methods of file and can be used where file would normally be used. For example, GzipFile implements a file-like object for accessing gzip-compressed data. cStringIO allows treating a Python string as a file. Sockets and files share many of the same methods as well. However, sockets lack the tell() method and cannot be used everywhere that GzipFile can be used. This shows the flexibility of duck typing: a file-like object can implement only methods it is able to, and consequently it can be only used in situations where it makes sense.

== Python设计哲学 ==

Python is a multi-paradigm language. This means that, rather than forcing coders to adopt one particular style of coding, it permits several. Object orientation, structured programming, functional programming, and aspect-oriented programming are all supported. Other paradigms can be supported through extensions, such as pyDBC and Contracts for Python which allow Design by Contract. Python is dynamically type-checked and uses garbage collection for memory management. An important feature of Python is dynamic name resolution, which binds method and variable names during program execution.

While offering choice in coding methodology, Python's designers reject exuberant syntax, such as in Perl, in favor of a sparser, less cluttered one. As with Perl, Python's developers expressly promote a particular "culture" or ideology based on what they want the language to be, favoring language forms they see as "beautiful", "explicit" and "simple". For the most part, Perl and Python users differ in their interpretation of these terms and how they are best implemented (see TIMTOWTDI and PythonPhilosophy).

Another important goal of the Python developers is making Python fun to use. This is reflected in the origin of the name (after the television series Monty Python's Flying Circus), in the common practice of using Monty Python references in example code, and in an occasionally playful approach to tutorials and reference materials. For example, the metasyntactic variables often used in Python literature are spam and eggs, instead of the traditional foo and bar.

Python is sometimes referred to as a "scripting language". In practice, it is used as a dynamic programming language for both application development and occasional scripting. Python has been used to develop many large software projects such as the Zope application server and the Mnet and BitTorrent file sharing systems. It is also extensively used by Google. [1]

Another important goal of the language is ease of extensibility. New built-in modules are easily written in C or C++. Python can also be used as an extension language for existing modules and applications that need a programmable interface.

Though the design of Python is somewhat hostile to functional programming (no tail call elimination or good support for anonymous closures) and the Lisp tradition, there are significant parallels between the philosophy of Python and that of minimalist Lisp-family languages such as Scheme. Many past Lisp programmers have found Python appealing for this reason.

== 新名词Pythonic ==

A few neologisms have come into common use within the Python community. One of the most common is "pythonic", which can have a wide range of meanings related to program style. To say that a piece of code is pythonic is to say that it uses Python idioms well; that it is natural or shows fluency in the language. Likewise, to say of an interface or language feature that it is pythonic is to say that it works well with Python idioms; that its use meshes well with the rest of the language.

In contrast, a mark of unpythonic code is that it attempts to "write C++ (or Lisp, or Perl) code in Python"—that is, provides a rough transcription rather than an idiomatic translation of forms from another language.

The prefix Py- can be used to show that something is related to Python. Examples of the use of this prefix in names of Python applications or libraries include Pygame, a binding of SDL to Python (commonly used to create games), PyUI, a GUI encoded entirely in Python, and PySol, a series of solitaire card games programmed in Python.

Users and admirers of Python—most especially those considered knowledgeable or experienced—are often referred to as Pythonists, Pythonistas, and Pythoneers
 * [[http://www.python.org/|Python Official Web]]
 * [[http://python.cn/|Python中文社区]]
 * [[http://en.wikipedia.org/wiki/Python_%28programming_language%29|Wikipedia:Python_programming_language]] ([[http://zh.wikipedia.org/wiki/Python|Wikipedia上的Python编程语言简介]])
 * [[http://docs.python.org/tut/tut.html|Python Tutorial]] (中文版: [[http://www.freebsd.org.hk/html/python/tut_tw/tut.html|Python教学文件2.0繁体中文版]] [[http://www.woodpecker.org.cn:9081/doc/Python/Py2.4tut/html/|Python指南2.4简体中文版]])
 * [[http://diveintopython.org/|Dive Into Python]] (中文版: [[http://www.woodpecker.org.cn/diveintopython/|Python研究]])
 * [[http://www.byteofpython.info/read/index.html|A Byte of Python]] (中文版: [[http://www.byteofpython.info/language/chinese/index.html|简明Python教程]])
 * [[http://docs.python.org/ref/ref.html|Python Reference Manual]] (中文版: [[http://chinesepython.org/pythonfoundry/ref2.3/tmp/|Python语言参考手册]] )
 * [[http://docs.python.org/lib/lib.html|Python Library Reference]] (中文版: [[http://chinesepython.org/pythonfoundry/lib2.3/tmp/|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://www-128.ibm.com/developerworks/cn/linux/theme/special/index.html#python|ibm上的python专题]]
 * [[http://www.ibiblio.org/obp/thinkCSpy/|How to Think Like a Computer Scientist (Learning with 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.honors.montana.edu/~jjc/easytut/easytut/|Non-Programmers Tutorial For Python]]
 * [[http://www.pentangle.net/python/handbook/|Handbook of the Physics Computing Course]]
 * [[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://www.livewires.org.uk/python/|The LiveWires Python Course]]
 * [[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.wag.caltech.edu/home/rpm/python_course/|Python Short Course]]
 * [[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)]]
行号 55: 行号 43:
== Python支持的平台 == == 入门教程 ==
 * awesome python https://github.com/vinta/awesome-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!]]
 * [[http://en.wikipedia.org/wiki/Python_syntax_and_semantics|Python语法]] from Wikipedia
 * [[http://www.linuxjournal.com/article/3882|Why_Python]] by Eric Raymond [[http://wiki.woodpecker.org.cn/moin/WhyPython/WhyPythonZh|why python中文版]]
 * [[http://www.amk.ca/python/howto/advocacy/|Python_Advocacy_HOWTO]] by A.M. Kuchling
 * 另类的Python教程: [[attachment:我的名字叫Python.pdf]]
 * python 与 COM [[http://oreilly.com/catalog/pythonwin32/chapter/ch12.html|Advanced Python and COM]]
 * Using IDLE: [[attachment:idleUse05b.zip]]
 * 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/
 * Python介绍视频[[http://video.google.com/videoplay?docid=9023849479319414382|Introducing Python]]
 * [[https://towardsdatascience.com/30-python-best-practices-tips-and-tricks-caefb9f8c5f5|30 Python Best Practices, Tips, And Tricks]]
 * [[https://docs.python-guide.org/dev/virtualenvs/|pipenv, virtual env]]
 * [[https://docs.python-guide.org/writing/gotchas/|Python Gotchas]]
== python游戏相关 ==
 * pygame: http://www.pygame.org/
 * panda3d: http://www.panda3d.org/
 * renpy: http://www.renpy.org/wiki/renpy/Home_Page
行号 57: 行号 65:
The most popular (and therefore best maintained) platforms Python runs on are Linux, BSD, Mac OS X, Microsoft Windows. Separate implementations also exist for the Java (called Jython) and for the .NET Framework or Mono (called IronPython). Other supported platforms include:

Unix-like

    * AIX operating system
    * BSD
    * FreeBSD
    * NetBSD
    * Linux
    * OpenBSD
    * SPARC Solaris
    * Other Unixes, e.g. Irix

 

Desktop OS's

    * Amiga
    * AROS
    * BeOS
    * Mac OS 9
    * Mac OS X
    * Microsoft Windows
    * OS/2
    * RISC OS (formerly Acorn)

 

Special and embedded

    * GP2X
    * Java virtual machine
    * Nokia 770 Internet Tablet
    * Palm OS
    * PlayStation 2
    * PlayStation Portable
    * Psion
    * QNX
    * Sharp Zaurus
    * Symbian OS
    * Windows CE/Pocket PC
    * Xbox (Used in XBMC)
    * VxWorks

 

Mainframe and other

    * AS/400
    * OS/390
    * Plan 9 from Bell Labs
    * VMS
    * z/OS

Most of the third-party libraries for Python (and even some first-party ones) are only available on Windows, Linux, BSD, and Mac OS X.

Python was originally developed as a scripting language for the Amoeba operating system capable of making system calls; however, that version is no longer maintained.

== Python应用 ==

Educational uses of Python

As of 2005, Python is getting more popular for teaching computer programming. Its strengths for teaching include its syntactic simplicity, flexible typing, and interactive interpreter.

Python uses far fewer symbols than languages like Java and C. For example blocks inside loops and IF statements are indicated by indentation rather than curly braces ({}), and the end of a line does not have to have a semicolon. Beginning students often have initial trouble with memorizing where curly braces and semi-colons go. With Python students can skip directly to the fun part of writing code that does something. Similarly, with Java, and C++, variables types must be declared before being used. That is not needed in Python which again allows students to quickly get to the interesting part of getting their program to do something.

The interactive interpreter is an extremely valuable aid to learning and experimentation. Learning-by-doing is about trying things out and seeing what happens. The faster you can get results from your experiment, the faster that learning produces results. Experience has shown that the interactive interpreter and lack of a compiler really speeds up the learning process, both for beginners and for pros who are learning a new library and such.

Major organizations using Python

    * Google uses Python for many tasks including the backends of web apps such as Gmail and Google Maps and for many of its search-engine internals.
    * NASA is using Python to implement a CAD/CAE/PDM repository and model management, integration, and transformation system which will be the core infrastructure for its next generation collaborative engineering environment.

Software written in Python

    * BitTorrent, the original implementation and several derivatives
    * Chandler, a personal information manager including calendar, email, tasks and notes support that is currently under development
    * Civilization IV videogame and the newly released computer game uses boost.python to allow the Python programming language access to many parts of the game (including the style and content of all interface screens)
    * Mailman, one of the more popular packages for running email mailing lists
    * Kombilo, go games' database manager and browser.
    * MoinMoin, a popular wiki engine in Python
    * OpenRPG, a virtual table on which to play Role Playing Games over the internet
    * Plone, a user-friendly and powerful open source Content Management System
    * Portage, the heart of Gentoo Linux. An advanced package management system based on the *BSD style ports system
    * Solipsis, a system for massively shared virtual world
    * Trac, bug/issue tracking database, integrated with MoinMoin wiki and Subversion source version control
    * Turbogears, an application framework composed of Cherrypy, SQLObject, MochiKit, and KID templates
    * Vampire: The Masquerade - Bloodlines, a videogame, uses Python for game scripting
    * ViewVC, a web-based interface for browsing CVS and SVN repositories
    * Zope, an object-oriented web-application platform. Zope includes an application server with an integrated object-oriented database and a built-in web-based management interface
    * Battlefield 2, a first person shooter that uses python for its configuration scripts
    * Indian Ocean Tsunami Detector, a free mobile phone software for tsunami prediction.
    * EVE Online, a space Multi Massive Online Role Playing Game, the highest-ranked MMORPG on MMORPG.com
    * SPE - Stani's Python Editor, a free, open-source Python IDE for Windows, Linux & Mac with wxGlade (GUI designer), PyChecker (Code Doctor) and Blender (3D) support.

Packages for Python

The Python Cheese Shop and Vaults of Parnassus are two primary directories of hundreds of Python packages

    * matplotlib, an extension providing matlab-like plotting and mathematical functions
    * Numeric Python, a language extension that adds support for large, multi-dimensional arrays and matrices
    * SciPy, a library of scientific and numerical routines
    * SimPy, a discrete-event simulation package;
    * Biopython, an international association of developers of freely available Python tools for computational molecular biology.
    * PyOpenGL, a package that allows 3D rendering using Python
    * Soya 3D, a high-level 3D game engine for Python
    * Pygame http://www.pygame.org Python game development
    * Python Imaging Library, a module for working with images
    * PyGTK, http://www.pygtk.org/, a popular cross-platform GUI library based on GTK+; furthermore, other GNOME libraries also have bindings for Python
    * PyQt, another popular cross-platform GUI library based on Qt; as above, KDE libraries have bindings too
    * wxPython, a port of wxWidgets and a popular cross-platform GUI library for Python

    * PyObjC, a Python-Objective C bridge that allows one to write Mac OS X software in Python
    * py2exe, compiler that turns Python scripts into standalone Windows programs

    * CherryPy, a Python-powered web framework
    * Django, another Python-powered web framework
    * Topsite Templating System, another Python-powered web framework
    * TurboGears, a web framework combining CherryPy, SQLObject, and Kid
    * ZODB a Python-specific object-oriented database
    * Cheetah, a Python-powered template engine and code-generation tool
    * mod_python, an Apache module allowing direct integration of Python scripts with the Apache web server
    * Quixote (software) a framework for developing Web applications in Python
    * Twisted, a networking framework for Python

See more recommended modules at Useful Modules in the Python.org wiki.

Software directories

    * Python Cheese Shop (also called the Python Package Index or PyPI) is the official directory of Python software libraries and modules.
    * ActiveState O'Reilly Python Cookbook contains hunderds of code samples for various tasks using Python.
    * Python Projects and Modules lots of useful code, as well as several articles on Python Programming.
    * Vaults of Parnassus — Links to resources.
    * Python 3D Software Collection — pointers to packages specifically useful in the production of 3D software and/or games with Python

Python implementations

    * Python – The reference implementation, also known as CPython
    * Jython – Python coded in Java
    * IronPython – Python for .NET and Mono platforms
    * Boo – Python-based but with static typing, for .NET and Mono
    * Stackless Python - Python with coroutines
    * Psyco - not an implementation, but JIT compiler for CPython
    * PyPy – Python coded in Python
    * Parrot – Virtual machine being developed mainly as the runtime for Perl 6, but with the intent to also support dynamic languages like Python, Ruby, Tcl, etc. Can currently execute a subset of Python
    * Logix – Python alternate front-end with macros
    * Movable Python- An alternative distribution of CPython for Windows. It can run off a USB stick and provides a Portable Programming Environment.


== 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库 =
 * 图像获取:linux平台下使用sane模块,Windows平台下使用twain模块

 * 图像处理["PythonImageLibrary中文手册"]

 * 使用_winreg模块操纵windows注册表

 * 读取excel:用xlrd包。把excel转成csv,使用csv库操作。

 * 将python程序打包成windows下可以执行的exe文件:使用[http://www.py2exe.org/ py2exe]模块

 * 加密:Python Cryptography Toolkit http://www.amk.ca/python/code/crypto
 * 在.net平台上使用python:[http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=ad7acff7-ab1e-4bcb-99c0-57ac5a3a9742 IronPython]

学习资料
 * [https://secure.wikimedia.org/wikipedia/zh/wiki/Python Wikipedia:Python]
 * [http://diveintopython.org/ Dive Into Python]
 * [http://www.woodpecker.org.cn/obp/diveintopython-zh-5.4/zh-cn/dist/html/toc/index.html 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(ruby)]
 * [http://www-128.ibm.com/developerworks/cn/linux/theme/special/index.html#python]
== Python与正则表达式 ==
 * 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

Python

1. 参考资料

2. 入门教程

3. python游戏相关

4. Python与正则表达式

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

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