A cheat sheet for the basic syntax and constructs of Python 3. It includes basic IO, conditionals, collections, functions, classes, modules and packages.
Syntax
- Python uses indentation to mark code blocks
Basic IO
input()
and output()
functions are used to handle basic IO (input and output)- String interpolation: add
f
before string opening quote and surround a variable or an expression with curly brackets {}
1
2
3
| name = input("Hello World! What is your name?\n")
welcome_message = f"Hello, {name} !"
print(welcome_message)
|
Basic Types
Numeric types
- We have our usual suspect operators
+
, -
, *
, /
and %
. We use **
for exponents - We have some basic functions to apply on numbers
abs
, round
. However, if we want to go fancy, we can import the math
module
Boolean
- Logical Operators
and
, or
and not
- Comparison Operators
==
, !=
, <
, >
, <=
and >=
String
- We can use either Single quote
'
or double quotes "
to surround a string literals. - We use triple single quotes
'''
or double quotes """
for multiline strings
1
2
3
4
5
6
| import datetime
birth_year = input("What is your birth year?\n")
now = datetime.datetime.now()
age = int(now.year) - int(birth_year)
age_message = f"You are, {age} years old!"
print(age_message)
|
Useful String Methods
- Case manipulation:
upper()
, lower()
, title()` - Finding index:
find()
which returns -1
if element is not found
Conditionals
if Statment
1
2
3
4
5
6
7
| temperature = int(input("What is the temperature today?\n"))
if temperature < 15:
print("It is freezing")
elif temperature > 25:
print("It is getting hot in here")
else:
print("Awesome")
|
Loops
While
1
2
3
4
| i = 0
while i < 2:
print(i)
i += 1
|
For
1
2
| for element in [1, 2]:
print(element)
|
loop keywords
Collections
Ranges
- We create a range using
range()
functionrange(stop)
creates a range from zero to the number stop, excluding the stop numberrange(start, stop, step)
creates a range from start to stop, excluding stop. step will be 1 if omitted
Lists
- Create a list using square brackets
l = ["a", "b", "c"]
- access elements of the list by supplying index to square brackets
a = l[0]
- We can use negative index to access the elements counting from the end,
d = l[-1]
- we can use sequence operations to get a sub-list
ab = l[0:2]
a list includes all the elements from index 0 to 1, the result doesn’t include the closing indexab = l[:2]
The start index can be omittedcd = l[1:]
The end index can be omittedab = l[:-1]
We can still use negative values for index, note that the value at the last index will still be excluded
- To check if an item exists in a collection, we can use the keyword
in
which returns a boolean. 1 in [1, 2, 3]
will result in true - Useful functions
- Useful methods
index(item)
, which will show error if the item doesn’t existappend(item)
, insert(index, item)
remove(item)
, clear()
pop()
sort()
reverse()
copy()
Unpacking Lists
Tuples
- Tuples are immutable
- We use parenthesis
()
to define a new tuple - We can access items via square brackets the same way we did for lists
Unpacking Tuples
Dictionaries (Maps)
- We use curly braces
{}
to define a dictionary {"a": a, "b":b}
- We get the value using square brackets
[]
that is d["a"]
, which will return an error if the key doesn’t exist - We can use the
get(key)
method, which will return None
if the key doesn’t exist. None
is an object that represents the absence of a value get(key, default)
will return the default value if a value doesn’t exist
Useful methods
values()
return a list of the values in the dictionary. Useful for iterating over the dictionary valuesitems()
return a list of tuples, each of which is one of the key-value pairs in the dictionary keys and values
Functions
- Functions must be declared before the scope in which they are used
def
is the keyword to define a function1
2
3
| def calculate_age(birth_year):
now = datetime.datetime.now()
return calculate_years_between(now.year, birth_year)
|
- A function will return
None
if no return
is present
Parameters
Let’s look at this example
1
2
| def concatenate(s1, s2=""):
return s1 + s2
|
- The function concatenate has two parameters
s1
and s2
s2
has a default value of an empty string. We can apply this function concatenate("hello")
and it would not complain of a missing argument.- Parameters that have default values must come after those that do not have default parameters
- We can use keyword arguments and not care for the order of the parameters (as compared to positional arguments)
concatenate(s2="world", s1="hello)
- Keyword arguments must come after positional arguments
Variadic Parameters
- A variadic parameter is a parameter that may map to one or more arguments
- We add an
*
before the argument name to indicate a variadic parameter def myFun(*argv):
1
2
3
4
5
| def concatenate(*strings):
result = ""
for string in strings:
result += string
return result
|
- We can call the concatenate method mentioned above, with any number of arguments, and those arguments would be bound to the list
strings
: concatenate("a", "b", "c")
Variadic Keyword Parameters
- We prefix the parameter name with
**
to indicate that it is variadic keyword parameter. - We can bind any number of named arguments, or key-value pairs of arguments to a keyword parameter
1
2
3
| def concatenate(**kwargs):
return kwargs["s1"] + kwargs["s2"]
print(concatenate(s1="a", s2="b")) # prints `ab`
|
- The same function could have been written as
1
2
3
4
5
| def concatenate(**kwargs):
result = ""
for value in kwargs.values():
result += value
return result
|
Classes
Class Declaration
1
2
3
4
5
6
7
8
| class User:
def __init__(self, name, year_of_birth):
self.name = name
self.year_of_birth = year_of_birth
def age(self):
now = datetime.datetime.now()
return int(now.year) - int(self.year_of_birth)
|
Object Instantiation
1
2
3
4
5
6
| name = input("Hello! What is your name?\n")
year_of_birth = input("What is your birth year?\n")
user = User(name, year_of_birth)
welcome_message = f"Hello, {user.name} !"
age_message = f"You are, {user.age()} years old!"
|
Modules and Packages
- A module is represented by a file
- A package is represented by a directory with a special
__init__.py
file in it. That file can be empty - Logically, packages contain modules
- We use
import
to import modules which may be in the same or in another package- We can import the whole module via
import package_name.module_name
, in that case we will need to use the fully qualified name to call any construct imported from that module package_name.module_name.function_name()
for example - We can import specific construct form a module
from package_name.module_name import some_construct
. Here we can call the construct directly without needing to qualify it
Resources
Comments powered by Disqus.