= 1 a
Python objects
In Python, everything is an object. So let’s talk about Python objects.
Fundamental definitions
Object
Every piece of data in Python, whether it’s a number, a string, a list, or a class instance is an object. Objects reside in memory and have a unique identity (address in memory), which can be checked using the id
function. Objects have a type (e.g., int
, str
, list
) which determines their behaviour and the operations that can be performed on them. Objects are the actual “things” that your program manipulates.
Value
A value is what an object stores. For example, an integer object might have the value 42
, or a string object might have the value "hello"
. Two different objects can have the same value (e.g. two distinct integer objects both storing 5
). The concept of “value” is often used when discussing the data itself, independent of its specific memory location or object identity.
Variable
In Python, a variable is a name that refers to an object. It acts as a label or reference to the specific memory location where an object is stored. When you assign a value to a variable, you are making that variable (name) point to an object holding that particular value.
Creating and deleting objects
Assignment
The assignment statement (=
) assigns a variable (or name, or label, or reference) to an object in memory. This object holds a value.
For instance, we can assign the variable a
to some object in memory that holds the value 1
:
You can define multiple variables at once, assigning them the same object:
= b = 10
a print(a, b)
10 10
… or different objects:
= 1, 2
a, b print(a, b)
1 2
Your turn:
= 1
a = a
b = 2 a
What do you think the value of b
is now?
Choosing variables
While I am using a
and b
a lot in this workshop (since the code has no other purpose than to demo the language itself), in your scripts you should use meaningful names (e.g. survival
, age
, year
, species
, temperature
). It will make reading the code this much easier.
Make sure not to use the names of built-in functions or built-in constants.
Deleting objects
You can delete variables with the del
statement:
= 3
a print(a)
3
del a
print(a)
--------------------------------------------------------------------------- NameError Traceback (most recent call last) Cell In[5], line 2 1 del a ----> 2 print(a) NameError: name 'a' is not defined
Then the garbage collector automatically deletes from memory objects with no variables assigned to them.
Types
Python comes with multiple built-in types.
Examples (non exhaustive):
type(1), type(1.0), type('1'), type(3+2j), type(True), type(sum)
(int, float, str, complex, bool, builtin_function_or_method)
int
= integer
float
= floating point number
complex
= complex number
str
= string
bool
= Boolean
Python is dynamically-typed, meaning you do not need to explicitly declare the type of a variable. It is inferred at runtime based on the value of the object the variable is assigned to.
Variables can be reassigned to objects holding different data types:
= 2.3
a type(a)
float
= "A string."
a type(a)
str
Type conversion
You can convert the type of some values. Here are some examples:
type('4'), type(int('4'))
(str, int)
type(3), type(str(3))
(int, str)
type(3), type(float(3))
(int, float)
type(3.4), type(str(3.4))
(float, str)
type(0), type(bool(0))
(int, bool)
type(True), type(int(True))
(bool, int)
Of course, not all conversions are possible:
int('red')
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) Cell In[15], line 1 ----> 1 int('red') ValueError: invalid literal for int() with base 10: 'red'
You might be surprised by some of the conversions:
int(3.9)
3
bool(3.4)
True
That’s because the Boolean of zero is False
and the Boolean of any non-zero number is True
.