Difference between revisions of "Python"
(→Reserved words (native to Python)) |
(→See also) |
||
Line 107: | Line 107: | ||
==See also== | ==See also== | ||
+ | *[http://pypi.python.org/pypi/pep8 pep8] and [https://github.com/GreenSteam/pep257/ pep257] | ||
*[http://pypi.python.org/pypi pypi - Python Package Index] | *[http://pypi.python.org/pypi pypi - Python Package Index] | ||
+ | |||
+ | ===Science / mathematics=== | ||
*[http://www.scipy.org/ SciPy] | *[http://www.scipy.org/ SciPy] | ||
*[http://numpy.scipy.org/ NumPy] | *[http://numpy.scipy.org/ NumPy] | ||
− | *[http://www. | + | *[http://www.sympy.org sympy] — a Python library for symbolic mathematics (aka a computer algebra system (CAS)) |
− | + | *[http://pandas.pydata.org/ pandas] — a Python Data Analysis Library | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | *[http:// | + | |
− | + | ||
===Graphics=== | ===Graphics=== | ||
*[http://www.pythonware.com/products/pil/ Python Imaging Library (PIL)] | *[http://www.pythonware.com/products/pil/ Python Imaging Library (PIL)] | ||
Line 126: | Line 121: | ||
*[http://www.pythonxy.com/foreword.php python(x,y)] — a free scientific and engineering development software for numerical computations, data analysis and data visualization | *[http://www.pythonxy.com/foreword.php python(x,y)] — a free scientific and engineering development software for numerical computations, data analysis and data visualization | ||
*[http://www.sagemath.org/ SAGE: Open Source Mathematics Software] | *[http://www.sagemath.org/ SAGE: Open Source Mathematics Software] | ||
+ | |||
===Multimedia=== | ===Multimedia=== | ||
*[http://pymedia.org/ PyMedia] — module for wav, mp3, ogg, avi, divx, dvd, cdda, etc. file manipulations. | *[http://pymedia.org/ PyMedia] — module for wav, mp3, ogg, avi, divx, dvd, cdda, etc. file manipulations. | ||
Line 133: | Line 129: | ||
*[http://pygooglechart.slowchop.com/ Python Google Chart] ([http://slowchop.com/2008/04/26/python-google-chart-020/ maps]) | *[http://pygooglechart.slowchop.com/ Python Google Chart] ([http://slowchop.com/2008/04/26/python-google-chart-020/ maps]) | ||
*[http://code.google.com/p/sympy/ SymPy] — a Python library for symbolic mathematics. | *[http://code.google.com/p/sympy/ SymPy] — a Python library for symbolic mathematics. | ||
+ | |||
===Bioinformatics=== | ===Bioinformatics=== | ||
*[http://www.biopython.org BioPython] | *[http://www.biopython.org BioPython] | ||
Line 141: | Line 138: | ||
*[http://www.pasteur.fr/recherche/unites/sis/Pise/ PISE] | *[http://www.pasteur.fr/recherche/unites/sis/Pise/ PISE] | ||
*[http://nodebox.net/code/index.php/Graph NodeBox: Graph] | *[http://nodebox.net/code/index.php/Graph NodeBox: Graph] | ||
+ | |||
+ | ===Miscellaneous=== | ||
+ | *[http://www.parallelpython.com/ Parallel Python] ("pp" module) | ||
+ | *[http://www.turbogears.org/ TurboGears] | ||
+ | *[http://rhodesmill.org/pyephem/ PyEphem] — an astronomy library for Python | ||
+ | *[http://linux.duke.edu/projects/urlgrabber/ urlgrabber] | ||
+ | *[http://pyparsing.wikispaces.com/ Pyparsing] (with [http://eikke.com/pyparsing-introduction-bnf-to-code/ Pyparsing introduction: BNF to code] and [[wikipedia:Backus–Naur form]]) | ||
+ | *[http://www.crummy.com/software/BeautifulSoup/ Beautiful Soup] — a Python HTML/XML parser designed for quick turnaround projects like screen-scraping. | ||
+ | *[http://www.reportlab.org/pyrxp.html pyRXP] — an XML parser | ||
+ | *[http://www.noah.org/wiki/Pexpect Pexpect] — [[expect]] for Python | ||
+ | *[http://www.mcnabbs.org/andrew/smug/ Smug] — a wiki built with [[git]] as the backend (also using Python and [http://djangoproject.com/ Djanjo]) | ||
+ | *[http://www.newartisans.com/blog_files/git.versioned.data.store.php#unique-entry-id-69 gitshelve] — using [[git]] as a versioned data store in Python | ||
+ | *[http://www.ics.uci.edu/~eppstein/PADS/ PADS] — a library of Python Algorithms and Data Structures implemented by David Eppstein of the University of California, Irvine. | ||
==External links== | ==External links== |
Revision as of 21:58, 19 July 2014
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.
see: The tutorial and scripts for examples and NumPy for tips on using this module.
Contents
Properties
- Python is strongly typed (i.e. types are enforced);
- dynamically, implicitly typed (i.e. you don't have to declare variables);
- case sensitive (i.e. var and VAR are two different variables); and
- object-oriented (i.e. everything is an object).
Reserved words / keywords (native to Python)
Note: Keywords define the language’s rules and structure, and they cannot be used as variable names.
and as assert break class continue def del elif else except exec finally for from global if import in is lambda not or pass print raise return try while with yield
Array slicing
If you have a list
nums = [1, 3, 5, 7, 8, 13, 20]
then the first 3 elements, middle 3 elements, and last 3 elements would be:
nums[:3] #equals [1, 3, 5] nums[2:5] #equals [5, 7, 8] nums[-3:] #equals [8, 13, 20]
Note that Python allows negative list indices. The index -1 represents the last element, -2 the penultimate element, etc. Python also has more advanced slicing operators using the double colon (::) index operator. For example, the code:
nums[3::] #equals [7, 8, 13, 20] (starting at index 3 going to the end) nums[::3] #equals [1, 7, 20] (starting at index 0 and getting every third element afterward) nums[1::2] #equals [3, 7, 13] (starting at index 1 and getting every second element afterward)
Here document
Python supports heredocs delimited by single or double quotes repeated three times (i.e. '''
or """
).
A simple example with variable interpolation is:
sender = 'Buffy the Vampire Slayer' recipient = 'Spike' print("""\ Dear %(recipient)s, I wish you to leave Sunnydale and never return. Not Quite Love, %(sender)s """ % locals())
The Template
class described in PEP 292 (Simpler String Substitutions) provides similar functionality for variable interpolation and may be used in combination with the Python triple-quotes syntax.
Variadic functions
Python supports very flexible variadic functions. By marking variables with one asterisk (e.g. *var
) the given variable is defined to be a tuple of all the extra arguments. By marking variables with two asterisks (e.g. **var
) the given variable is a dictionary of all extra keyword arguments; the keys are strings, which are the names that were. Conventionally these are called "args" and "kwargs" respectively, but they may be something else, and packages often make good use of this ability to improve readability (e.g. BeautifulSoup). If they exist, these arguments must be the last one in the list.
def f(*args, **kwargs): print args print kwargs >>> f(1, 2, "cow", "kitty") (1, 2, "cow", "kitty") {} >>> f(arg1=1, sample=2, name="cow", hero="kitty") () {"arg1": 1, "sample": 2, "name": "cow", "hero": "kitty"} >>> f(1, 2, name="cow", hero="kitty") (1, 2) {"name": "cow", "hero": "kitty"} >>> f(arg1=1, sample=2, name="cow", "kitty") SyntaxError "Non-keyword arg after keyword arg"
Conversely you may also pass in a tuple or dictionary using the same asterisk-notation and have it automatically expand to fill.
def g(a, b, c): print a, b, c >>> mytuple = 1,2,3 >>> mydict = {"a": "first", "b": "second", "c": "third"} >>> g(*mytuple) 1 2 3 >>> g(**mydict) first second third >>> g(**{"a": "first"}) TypeError "g() takes exactly 3 non-keyword arguments (got 1)" >>> g(**{"a": "first", "b": "second", "c": "third", "d": "fourth"}) TypeError "g() got an unexpected keyword argument 'd'"
Version history
- 3.x
- Python 3.2.3 — 2012-04-10
- Python 3.0.1 — 2009-02-13
- 2.x
- Python 2.7.3 — 2012-04-09
- Python 2.6.1 — 2008-12-04
- Python 2.5.4 — 2008-12-23
- Python 2.5.2 — 2008-02-22
- Python 2.5.1 — 2007-04-18
- Python 2.4.4 — 2006-10-18
- Python 2.4.2 — 2005-09-28
See also
Science / mathematics
- SciPy
- NumPy
- sympy — a Python library for symbolic mathematics (aka a computer algebra system (CAS))
- pandas — a Python Data Analysis Library
Graphics
- Python Imaging Library (PIL)
- Matplotlib — a python 2D plotting library which produces publication quality figures
- python(x,y) — a free scientific and engineering development software for numerical computations, data analysis and data visualization
- SAGE: Open Source Mathematics Software
Multimedia
- PyMedia — module for wav, mp3, ogg, avi, divx, dvd, cdda, etc. file manipulations.
- ID3 — ID3 tagging in Python
- Python Google Chart (maps)
- SymPy — a Python library for symbolic mathematics.
Bioinformatics
- BioPython
- PySAT: Python Seqeuence Analysis Tools
- Noah Hoffman code
- Blast Parser — by Arne Muller
- Leighton Pritchard code
- PISE
- NodeBox: Graph
Miscellaneous
- Parallel Python ("pp" module)
- TurboGears
- PyEphem — an astronomy library for Python
- urlgrabber
- Pyparsing (with Pyparsing introduction: BNF to code and wikipedia:Backus–Naur form)
- Beautiful Soup — a Python HTML/XML parser designed for quick turnaround projects like screen-scraping.
- pyRXP — an XML parser
- Pexpect — expect for Python
- Smug — a wiki built with git as the backend (also using Python and Djanjo)
- gitshelve — using git as a versioned data store in Python
- PADS — a library of Python Algorithms and Data Structures implemented by David Eppstein of the University of California, Irvine.
External links
- Python.org — Official site
- PythonInfo Wiki
- Perl/Python Phrasebook
- Rosetta Code
- Yet Another Rosetta Code Problem (Perl, Ruby, Python, Haskell, ...)
- Python 2.5 Quick Reference
- Byte of Python
- pydoc.org: Python Documentation Online
- PerformancePython
- MPI for Python
- Pyxer — a Python AJAX Server/ Framework
- Debugging in Python
- wikipedia:python
Online books/tutorials
- Building Skills in Python: A Programmer's Introduction to Python — by Steven F. Lott (2007)
- Beginning Python for Bioinformatics
- Python course in Bioinformatics
- Learn Python in 10 minutes — from Poromenos's Stuff
- Dive Into Python — Python from novice to pro — download entire eBook.
- Python 101 cheat sheet
- Python HOWTOs