172 lines
9.0 KiB
Markdown
172 lines
9.0 KiB
Markdown
---
|
||
title: Python
|
||
---
|
||
|
||
## What is Python?
|
||
|
||
<a href='https://www.python.org' target='_blank' rel='nofollow'>Python</a> is a general purpose programming language which is dynamically typed, interpreted, and known for its easy readability with great design principles.
|
||
|
||
To learn more about Python, check out these pages on python.org:
|
||
|
||
<a href='https://www.python.org/doc/essays/blurb/' target='_blank' rel='nofollow'>What is Python?</a>
|
||
|
||
<a href='https://docs.python.org/3/faq/general.html' target='_blank' rel='nofollow'>Python FAQ</a>.
|
||
|
||
## Python 2 or Python 3
|
||
|
||
* The two versions are similar, with knowledge of one switching to writing code for the other is easy.
|
||
* <a href='https://wiki.python.org/moin/Python2orPython3' target='_blank' rel='nofollow'>Python 2 or Python 3</a>
|
||
* <a href='https://www.python.org/dev/peps/pep-0373/' target='_blank' rel='nofollow'>Python 2.x will not be maintained past 2020.</a>
|
||
* 3.x is under active development. This means that all recent standard library improvements, for example, are only available by default in Python 3.x.
|
||
* Python ecosystem has amassed a significant amount of quality software over the years. The downside of breaking backwards compatibility in 3.x is that some of that software (especially in-house software in companies) still doesn't work on 3.x yet.
|
||
|
||
## Installation
|
||
|
||
Most *nix based operating systems come with Python installed (usually Python 2, Python 3 in most recent ones). Replacing the system Python is not recommended and may cause problems. However, different versions of Python can be safely installed alongside the system Python. See <a href='https://docs.python.org/3/using/index.html' target='_blank' rel='nofollow'>Python Setup and Usage</a>.
|
||
|
||
Windows doesn't come with Python, the installer and instructions can be found <a href='https://docs.python.org/3/using/windows.html' target='_blank' rel='nofollow'>here</a>
|
||
|
||
## Python Interpreter
|
||
|
||
The Python interpreter is what is used to run Python scripts.
|
||
|
||
If it is available and in Unix shell’s search path makes it possible to start it by typing the command `python` followed by the script name will invoke the interpreter and run the script.
|
||
|
||
`hello_campers.py`
|
||
|
||
```python
|
||
print('Hello campers!')
|
||
```
|
||
|
||
From terminal:
|
||
|
||
$ python hello_campers.py
|
||
Hello campers!
|
||
|
||
"When multiple versions of Python are installed, calling them by version is possible depending on the install configuration. In the Cloud9 ide custom environment, they can be invoked like:
|
||
|
||
$ python --version
|
||
Python 2.7.6
|
||
$ python3 --version
|
||
Python 3.4.3
|
||
$ python3.5 --version
|
||
Python 3.5.1
|
||
$ python3.6 --version
|
||
Python 3.6.2
|
||
$ python3.7 --version
|
||
Python 3.7.1
|
||
|
||
## Python Interpreter Interactive Mode
|
||
|
||
Interactive mode can be started by invoking the Python interpreter with the `-i` flag or without any arguments.
|
||
|
||
Interactive mode has a prompt where Python commands can be entered and run:
|
||
|
||
$ python3.5
|
||
Python 3.5.1 (default, Dec 18 2015, 00:00:00)
|
||
GCC 4.8.4 on linux
|
||
Type "help", "copyright", "credits" or "license" for more information.
|
||
>>> print("Hello campers!")
|
||
Hello campers!
|
||
>>> 1 + 2
|
||
3
|
||
>>> exit()
|
||
$
|
||
|
||
## The Zen of Python
|
||
|
||
Some of the principles that influenced the design of Python are included as an Easter egg and can be read by using the command inside Python interpreter interactive mode:
|
||
|
||
>>> import this
|
||
The Zen of Python, by Tim Peters
|
||
|
||
Beautiful is better than ugly.
|
||
Explicit is better than implicit.
|
||
Simple is better than complex.
|
||
Complex is better than complicated.
|
||
Flat is better than nested.
|
||
Sparse is better than dense.
|
||
Readability counts.
|
||
Special cases aren't special enough to break the rules.
|
||
Although practicality beats purity.
|
||
Errors should never pass silently.
|
||
Unless explicitly silenced.
|
||
In the face of ambiguity, refuse the temptation to guess.
|
||
There should be one-- and preferably only one --obvious way to do it.
|
||
Although that way may not be obvious at first unless you're Dutch.
|
||
Now is better than never.
|
||
Although never is often better than *right* now.
|
||
If the implementation is hard to explain, it's a bad idea.
|
||
If the implementation is easy to explain, it may be a good idea.
|
||
Namespaces are one honking great idea -- let's do more of those!
|
||
|
||
|
||
## Pros and Cons of Python
|
||
### Pros
|
||
1. Interactive language with a module support for almost all functionality.
|
||
2. Open Source: So, you can contribute to the community, the functions you have developed for future use and to help others
|
||
3. A lot of good interpreters and notebooks available for better experience like jupyter notebook.
|
||
|
||
#### Cons
|
||
1. Being open source, many different ways have developed over the year for same function. This sometimes, creates chaos for others to read someone else code.
|
||
2. It is a slow language. So, a very bad language to use for developing general algorithms.
|
||
|
||
## Documentation
|
||
|
||
<a href='https://docs.python.org/3/' target='_blank' rel='nofollow'>Python is well documented</a>. These docs include tutorials, guides, references and meta information for language.
|
||
|
||
Another important reference is the Python Enhancement Proposals (<a href='https://www.python.org/dev/peps/' target='_blank' rel='nofollow'>PEPs</a>). Included in the PEPs is a style guide for writing Python code, <a href='https://www.python.org/dev/peps/pep-0008/' target='_blank' rel='nofollow'>`PEP 8`</a>.
|
||
|
||
## Debugging
|
||
|
||
Inline `print` statements can be used for simple debugging:
|
||
|
||
> **... often the quickest way to debug a program is to add a few print statements to the source: the fast edit-test-debug cycle makes this simple approach very effective.**
|
||
>
|
||
> --<a href='https://www.python.org/doc/essays/blurb/' target='_blank' rel='nofollow'>Executive Summary</a>
|
||
|
||
Python also includes more powerful tools for debugging, such as:
|
||
|
||
* logging module, <a href='https://docs.python.org/3/library/logging.html' target='_blank' rel='nofollow'>_logging_</a>
|
||
* debugging module, <a href='https://docs.python.org/3/library/pdb.html' target='_blank' rel='nofollow'>_pdb_</a>
|
||
|
||
Just note that these exist for now.
|
||
|
||
## Hello World!
|
||
|
||
Going back to the docs, we can read about the <a href='https://docs.python.org/3/library/functions.html#print' target='_blank' rel='nofollow'>`print`</a> function, a <a href='https://docs.python.org/3/library/functions.html' target='_blank' rel='nofollow'>_built-in function_</a> of the <a href='https://docs.python.org/3/library/index.html' target='_blank' rel='nofollow'>Python Standard Library</a>.
|
||
|
||
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
|
||
|
||
The built-in functions are listed in alphabetical order. The name is followed by a parenthesized list of formal parameters with optional default values. Under that is a short description of the function and its parameters are given and occasionally an example.
|
||
|
||
The <a href='https://docs.python.org/3/library/functions.html#print' target='_blank' rel='nofollow'>`print`</a> function in Python 3 replaces the <a href='https://docs.python.org/2/reference/simple_stmts.html#print' target='_blank' rel='nofollow'>`print`</a> statement in Python 2.
|
||
|
||
>>> print("Hello world!")
|
||
Hello world!
|
||
|
||
A function is called when the name of the function is followed by `()`. For the Hello world! example, the print function is called with a string as an argument for the first parameter. For the rest of the parameters the defaults are used.
|
||
|
||
The argument that we called the `print` function with is a `str` object or _string_, one of Python's <a href='https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str' target='_blank' rel='nofollow'>_built-in types_</a>.
|
||
Also the most important thing about python is that you don't have to specify the data type while declaring a variable, python's compiler
|
||
will do that itself based on the type of value assigned.
|
||
|
||
The `objects` parameter is prefixed with a `*` which indicates that the function will take an arbitrary number of arguments for that parameter.
|
||
|
||
## Want to learn more?
|
||
|
||
Free Code Camp has some great resources. The web is a big place, there's plenty more to explore:
|
||
* Python Practice Book: http://anandology.com/python-practice-book/index.html
|
||
* Think Python: http://greenteapress.com/thinkpython/html/index.html
|
||
* Practical Business Python: http://pbpython.com/
|
||
* Another course: https://realpython.com/?utm_source=fsp&utm_medium=promo&utm_campaign=bestresources
|
||
* General: https://www.fullstackpython.com/
|
||
* Learn the Basics: https://www.codecademy.com/learn/learn-python
|
||
* Computer science using Python: https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-11?ref=hackernoon#!
|
||
* Another computer science course using Python: https://www.udacity.com/course/intro-to-computer-science--cs101
|
||
* List of more resources for learning python: https://github.com/vinta/awesome-python
|
||
* Interactive Python: http://interactivepython.org/runestone/static/thinkcspy/index.html
|
||
* Developer's Guide to Python: https://devguide.python.org/
|
||
* Learn Python the Hard Way book: https://learnpythonthehardway.org/python3/
|
||
* Introduction to Python Programming: https://www.udacity.com/course/introduction-to-python--ud1110
|