Welcome to the code club!¶
Note
Code for this session in: https://gitlab.fabcloud.org/barcelonaworkshops/code-club/tree/2020/01_python_basics
According to Codelani’s list, there are about 3,156 computer languages (including dialects of BASIC, esoteric programming languages, and markup languages ).
In Wikipedia you can find a more filtered list by type of language.
For the geeks!
Instructions for the Apollo Guidance Computer https://en.wikipedia.org/wiki/Apollo_Guidance_Computer#Instruction_set
What is python?¶
Python is an open source and high-level programming language, which means, it is easily understandable and most crucially readable for humans, simultaneously being independent of the platform it is running.
It was designed by this guy (Guido Van Rossum - Monty python fan)
Why python?¶
List of Python applications:
- Readable and Maintainable Code
age = 16
if age >= 18:
print (“Eligible to Vote”)
else:
print (“Not Eligible to Vote”)
- Compatible with Major Platforms and Systems
Python is supported in everywhere. You can even use Python interpreters to run the code on specific platforms and tools. Also, since Python is an interpreted programming language, it allows you to run the same code on multiple platforms without recompilation.
- Top 3 popular programming languages
According to the latest TIOBE Programming Community Index, Python is one of the top 3 popular programming languages of 2019.
- Robust Standard Library
Its large and robust standard library makes Python score over other programming languages. The standard library allows you to choose from a wide range of modules according to your precise needs. Each module further enables you to add functionality to the Python application without writing additional code.
- Many Open Source Frameworks and Tools
You can even use several open source Python frameworks, libraries and development tools to curtail development time without increasing development cost.
Where to start?¶
Python 2 vs 3¶
- Python 2.0 was first released in 2000. Its latest version, 2.7, was released in 2010.
- Python 3.0 was released in 2008. Its newest version, 3.7, was released in 2016, and version 3.7 is currently in development.
- Although Python 2.7 is still widely used it shoudn’t.
- On January 1, 2020, Python 2.7 was set to be no longer maintained
Python Environments¶
A python environment is a tool that helps to keep dependencies required by different projects separate by creating isolated python virtual environments for them. This is one of the most important tools that most of the Python developers use.
The official way
A Virtual Environment is a tool to keep the dependencies required by different projects in separate places, by creating virtual Python environments for them. It solves the “Project X depends on version 1.x but, Project Y needs 4.x” dilemma, and keeps your global site-packages directory clean and manageable.
The most popular tools for setting up environments are:
- PIP (a Python package manager; funnily enough, it stands for “Pip Installs Packages”) with
virtualenv
(a tool for creating isolated environments) - the traditional approach
# Create environment with virtualenv
➜ python -m venv environment
# Activate the environment
➜ source ./environment/bin/activate
# List packages
➜ pip list
# Install packages
➜ pip install <package-name>
- Conda (a package and environment manager)
- Virtualenvwrapper (environment manager wrapped around virtualenv)
- Pipenv (probably the best) - find how to set it up here
What’s the best?
It depends on what you do and how you do it. Conda manages environments globally, although it can be slow due to conda forge size. Virtualenvwrapper is very good, and does things globally too. Pip manages globally, but without environment, and pipenv or venv does not install things globally… So it depends!
The official way¶
Follow this guide. ATM not very well maintained?
Virtualenvwrapper (easy peasy)¶
virtualenvwrapper is a set of extensions to Ian Bicking’s virtualenv tool. The extensions include wrappers for creating and deleting virtual environments and otherwise managing your development workflow, making it easier to work on more than one project at a time without introducing conflicts in their dependencies.
To install virtualenvwrapper:
pip install virtualenvwrapper
To create an environment:
mkvirtualenv py3 -p python3
To activate it:
workon py3
To install something in it:
pip install something
Anaconda/Miniconda (heavy but with GUI)¶
Anaconda is a Python distribution intended for data processing, predictive analysis and scientific programming that simplifies the management of packages. There are other ways to install python and the necessary packages for OpenCv but they are more complex and Anaconda makes it easier for us to work.
Windows users
In this link you can find a nice tutorial to set up your anaconda
- Step 1 - Visit official Anaconda website and download it
There are different versions for different Windows, Mac and Linux operating systems. Download and follow the instructions to install the one that suits you best.
In my case is Ubuntu ( Linux )
You can check that you have installed it by opening a command line and typing the following:
➜ python -V
- Step 2 - Creating an environment from an environment.yml file
Use the terminal or an Anaconda Prompt for the following steps.
Create the environment for Python 3.7:
➜ conda create -n yourenvname python=x.x anaconda
And press Yes [y]
To activate your environment:
➜ conda activate nameenv
To deactivate an active environment:
➜ conda deactivate
Manage your environments like a pro
More information about managing environments.
Windows users
Install a package:
➜ conda install -c conda-forge <name_package>
Working with python¶
Mainly, one can execute a script in three ways:
- Using a python interpreter (like PythonLauncher in MacOS)
- Running a python script in the command line:
➜ python app.py
- Making the file executable. For this we need to tell it which interpreter to use.
To check where an application (in UNIX) or program (in Windows) resides in your computer, you can check it in the CL by:
➜ where python
/Users/macuser/anaconda2/bin/python
/usr/local/bin/python
/usr/bin/python
bash, windows and linux users
Instead of where, type in whereis
Then, the very first line of the file should be: #!path/to/python
, i.e.: #!/Users/macuser/anaconda2/bin/python
. Then, we can make the file executable by (this is called a shebang)
➜ chmod +x app.py
And run it by:
➜ ./app.py
Algorithms and flow charts¶
Coding control flow structures¶
While Loop¶
C
while (condition) {
// Do stuff
}
Python
a = 0
while a < 10:
a = a + 1 #alternatively a += 1
print(a)
Conditionals¶
C
if (condition) {
// Do stuff
} else {
// Do other stuff
}
Python
a = 1
if a > 5:
print("This shouldn't happen.")
else:
print("This should happen.")
For loop¶
C
for (# iterations) {
//Do stuff
}
Python
for i in range(6):
print ('Hello')
Boolean Expressions¶
EXAMPLES¶
Hello world¶
Super basic example:
print ('Hello')
➜ python Example_00.py
Hello
A bit more complex, with main structure:
def main():
print ('Hello')
if __name__ == '__main__':
main()
➜ python Example_01.py
Hello
TODAY’s CHALLENGE: Hello world with arguments¶
Challenge
Make a python script that you can run either with python script.py
or by ./script.py
and that prints: Hello <YOUR NAME> <YOUR SURNAME>
➜ python script.py -h
usage: Example_02.py [-h] [--name NAME] [--surname SURNAME]
optional arguments:
-h, --help show this help message and exit
--name NAME, -n NAME your name
--surname SURNAME, -s SURNAME your surname
➜ python script.py -n 'Oscar' -s 'Gonzalez'
Hello Oscar Gonzalez
Where to start?
More info about argparsing here
import argparse
###
--- Your function here ---
###
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument("--name", "-n", default = "Antonio", help="your name")
###
# --- Your argument here ---
####
parser.set_defaults(keep=False)
args = parser.parse_args()
main(args.name, args.surname)
References¶
- Understanding the Features and Usage of 10 Popular Python GUI Frameworks and Toolkits
- Pipenv
- REPL.it
- Managing packages