Variable
Variables allow us to store values in named records that can be used in a program. This module shows how to define variables and make assertions about the state of each defined variable.
def main():
# Here are the main literal types to be aware of
a = 1
b = 2.0
c = True
d = "hello"
# Notice that each type is a class. Each of the variables above refers
# to an instance of the class it belongs to
a_type = type(a)
b_type = type(b)
c_type = type(c)
d_type = type(d)
# Also, say hello to the `assert` keyword! This is a debugging aid that
# we will use to validate the code as we progress through each `main`
# function. These statements are used to validate the correctness of
# the data and to reduce the amount of output sent to the screen
assert a_type is int
assert b_type is float
assert c_type is bool
assert d_type is str
# Everything is an object in Python. That means instances are objects
# and classes are objects as well
assert isinstance(a, object) and isinstance(a_type, object)
assert isinstance(b, object) and isinstance(b_type, object)
assert isinstance(c, object) and isinstance(c_type, object)
assert isinstance(d, object) and isinstance(d_type, object)
# We can represent integer literals in Python using 4 bases: decimal,
# hexadecimal, octal, and binary. Decimal literals do not require any
# prefix while other bases require prefixes:
# - `0x` for hexadecimal
# - `0o` for octal
# - `0b` for binary
assert 100 == 0x64 == 0o144 == 0b1100100
# We can use underscores (literal `_`) to separate digit groups in
# integer literals
assert 10_000 == 10000
assert 0x01_0f_2c == 69_420
assert 3.456_290e-1 == 0.3_456_290
# There is also a special literal called None. This literal is used to
# point that a particular variable or object is not created
e = None
e_type = type(e)
assert e_type is type(None)
assert isinstance(e, object) and isinstance(e_type, object)
if __name__ == "__main__":
main()