Python Basics: Operators

Operators are symbols or keywords that perform various operations on one or more values. They are fundamental building blocks for manipulating data, performing calculations, and making comparisons in programs.

Python Basics: Operators

For more posts about Python, follow the link below.πŸ‘‡πŸ‘‡πŸ‘‡

Exploring Python
Python is frequently utilized in creating websites and software, as well as for automating tasks, analyzing data, and visualizing information.

In the previous post, we discussed basic types like integers and performed some operations on them using different operators. That gave us a brief taste of what operators are in Python and enabled us to explore even more that matter.

If you feel like you need a refresher on basic types, you can find it by following the link. πŸ‘‡πŸ‘‡πŸ‘‡

Python Basics: More on types
Types represent the classification of data and determine how values can be stored, manipulated, and interacted with. Understanding types is essential for effective data handling, proper function usage, and ensuring accurate program behavior.

Intro

Operators in Python are symbols or special keywords that perform various operations on variables and values. Here are some of the most common types of operators that can be found in Python:

Operators type Description
Arithmetic Perform basic mathematical operations
Assignment Assign values to variables
Bitwise Perform bitwise operations on integers
Comparison Compare two values and return a boolean result
Identity Compare the memory location of two objects
Logical Combine boolean values or expressions
Membership Check if a value is present in a sequence

These fundamental types of operators allow you to perform a wide range of operations on variables and values to achieve different tasks.

Arithmetic operators

Arithmetic operators provide an ability to perform basic mathematical operations in Python.

Addition (+) operator takes two numeric values and returns their sum.

>>> a = 3
>>> b = 5
>>> result = a + b
>>> print(result)
8

Subtraction (-) operator takes two numeric values and returns the difference between the first and the second - it subtracts the second number from the first.

>>> a = 10
>>> b = 4
>>> result = a - b
>>> print(result)
6

Multiplication (*) operator takes two numeric values and returns their product - it multiplies two numbers.

>>> a = 3
>>> b = 7
>>> result = a * b
>>> print(result)
21

Division (/) operator performs floating-point division, it divides the first number by the second, resulting in a floating-point value.

>>> a = 15
>>> b = 4
>>> result = a / b
>>> print (result)
3.75

Modulo (%) operator calculates the remainder when dividing the first value by the second value.

>>> a = 17
>>> b = 5
>>> result = a % b
>>> print (result)
2

Exponentiation (**) calculates the value of the first number raised to the power of the second number.

>>> a = 2
>>> b = 3
>>> result = a ** b
>>> print(result)
8

Floor Division (//) operator calculates the quotient - it divides the first number by the second and rounds down to the nearest integer.

>>> a = 17
>>> b = 5
>>> result = a // b
>>> print(result)
3

Arithmetic operators are crucial for performing mathematical calculations. They provide the basic building blocks for working with numbers.

Assignment operators

Assignment operators provide the ability to update a variable's value.

Assignment (=) operator is used to assign the value on the right side to the variable on the left side.

>>> x = 10
>>> print(x)
10

Add and Assign (+=) operator updates the value of a variable by adding a specified value to it. It adds the right operand to the left operand and assigns the result to the left operand.

>>> x = 5
>>> x += 3
>>> print(x)
8

Subtract and Assign (-=) operator updates the value of a variable by subtracting a specified value from it. The operator subtracts the right operand from the left operand and assigns the result to the left operand.

>>> x = 10
>>> x -= 4
>>> print(x)
6

Multiply and Assign (*=) operator updates the value of a variable by multiplying it with a specified value. It multiplies the left operand by the right operand and assigns the result to the left operand.

>>> x = 3
>>> x *= 2
>>> print(x)
6

Divide and Assign (/=) operator updates the value of a variable by dividing it by a specified value. It divides the left operand by the right operand and assigns the result to the left operand.

>>> x = 15
>>> x /= 3
>>> print(x)
5.0

Modulo and Assign (%=) operator updates the value of a variable with the remainder after division. It computes the modulo (remainder) of the left operand divided by the right operand and assigns the result to the left operand.

>>> x = 17
>>> x %= 5
>>> print(x)
2

Exponentiation and Assign (**=) operator updates the value of a variable by exponentiating it with a specified value. It raises the left operand to the power of the right operand and assigns the result to the left operand.

>>> x = 2
>>> x **= 3
>>> print(x)
8

Floor Division and Assign (//=) operator updates the value of a variable with the result of floor division. It performs floor division on the left operand and assigns the result to the left operand.

>>> x = 17
>>> x //= 5
>>> print(x)
3

Walrus operator (:=) assigns a value to a variable and then returns that value. This can be especially useful in situations where you want to both use a value and assign it to a variable. It is often used in contexts where you want to avoid computing a value multiple times or improve code readability by combining assignment and usage in a single line.

>>> x = 1
>>> print(x)
1
>>> print(x := 3)
3
>>> print(x)
3

Assignment operators provide a concise way to both perform an operation and update the value of a variable in a single step. They are often used to streamline code and make it more readable.

Bitwise operators

Bitwise operators are used to manipulate individual bits of integer values. They perform operations at the binary level, treating values as sequences of bits (zeros and ones).

πŸ’‘
To express a binary literal, we can use 0b or 0B prefix.

For instance, number 2 can be expressed in binary format as 10.

>>> x = 0b10
>>> print (x)
2
πŸ’‘
To print a number in binary format, we can use the bin() function.
>>> x = 2
>>> print(bin(x))
0b10

Understanding binary notation is crucial when dealing with bitwise operations.

Bitwise AND (&) operator performs a bitwise AND operation on corresponding bits of two integers. The result has a 1 only if both bits being compared are 1.

>>> a = 0b1100
>>> print(a)
12
>>> print(bin(a))
0b1100
>>> b = 0b0111
>>> print(b)
7
>>> print(bin(b))
0b111
>>> result = a & b
>>> print(result)
4
>>> print(bin(result))
0b100

Bitwise OR (|) operator performs a bitwise OR operation on corresponding bits of two integers. The result has a 1 if at least one of the bits being compared is 1.

>>> a = 0b1100
>>> print(a)
12
>>> print(bin(a))
0b1100
>>> b = 0b0111
>>> print(b)
7
>>> print(bin(b))
0b111
>>> result = a | b
>>> print(result)
15
>>> print(bin(result))
0b1111

Bitwise XOR (^) operator performs a bitwise XOR (exclusive OR) operation on corresponding bits of two integers. The result has a 1 if the bits being compared are different (one 0 and one 1).

>>> a = 0b1100
>>> print(a)
12
>>> print(bin(a))
0b1100
>>> b = 0b0111
>>> print(b)
7
>>> print(bin(b))
0b111
>>> result = a ^ b
>>> print(result)
11
>>> print(bin(result))
0b1011

Bitwise NOT (~) operator inverts the bits of an integer, changing 0s to 1s and 1s to 0s. It effectively calculates the two's complement of the number minus one.

>>> a = 0b1100
>>> print(a)
12
>>> print(bin(a))
0b1100
>>> result = ~a
>>> print(result)
-13
>>> print(bin(result))
-0b1101

Left Shift (<<) operator shifts the bits of an integer to the left by a specified number of positions. Zeros are shifted in from the right, and the leftmost bits are discarded.

>>> a = 0b1100
>>> print(a)
12
>>> print(bin(a))
0b1100
>>> result = a << 2
>>> print(result)
48
>>> print(bin(result))
0b110000

Right Shift (>>) operator shifts the bits of an integer to the right by a specified number of positions. The rightmost bits are discarded, and for signed numbers, the sign bit is preserved.

>>> print(a)
12
>>> print(bin(a))
0b1100
>>> result = a >> 2
>>> print(result)
3
>>> print(bin(result))
0b11

Bitwise operators are particularly useful for tasks that involve manipulating individual bits, such as working with low-level data representations, optimization, and encryption algorithms.

Comparison operators

Comparison operators are used to compare values or expressions and return a Boolean result (True or False) based on the comparison.

Equal to (==) operator checks if two values are equal. It returns True if both values are the same.

>>> a = 5
>>> b = 5
>>> result = a == b
>>> print(a, b, result)
5 5 True
>>> b = 6
>>> result = a == b
>>> print(a, b, result)
5 6 False

Not equal to (!=) operator checks if two values are not equal. It returns True if the values are different.

>>> a = 5
>>> b = 5
>>> result = a != b
>>> print(a, b, result)
5 5 False
>>> b = 6
>>> result = a != b
>>> print(a, b, result)
5 6 True

Less than (<) operator checks if the left value is less than the right value. It returns True if the left value is smaller than the right value.

>>> a = 5
>>> b = 5
>>> result = a < b
>>> print(a, b, result)
5 5 False
>>> b = 6
>>> result = a < b
>>> print(a, b, result)
5 6 True

Greater than (>) operator checks if the left value is greater than the right value. It returns True if the left value is larger than the right value.

>>> a = 5
>>> b = 5
>>> result = a > b
>>> print(a, b, result)
5 5 False
>>> b = 6
>>> result = a > b
>>> print(a, b, result)
5 6 False

Less than or equal to (<=) operator checks if the left value is less than or equal to the right value. It returns True if the left value is smaller or equal to the right value.

>>> a = 5
>>> b = 5
>>> result = a <= b
>>> print(a, b, result)
5 5 True
>>> b = 6
>>> result = a <= b
>>> print(a, b, result)
5 6 True
>>> b = 4
>>> result = a <= b
>>> print(a, b, result)
5 4 False

Greater than or equal to (>=) operator checks if the left value is greater than or equal to the right value. It returns True if the left value is larger or equal to the right value.

>>> a = 5
>>> b = 5
>>> result = a >= b
>>> print(a, b, result)
5 5 True
>>> b = 6
>>> result = a >= b
>>> print(a, b, result)
5 6 False

Comparison operators are fundamental for making decisions in your code based on the relationships between values. They are used extensively in conditions, loops, and other control flow structures.

Identity operators

Identity operators are used to compare the memory locations of two objects, indicating whether they refer to the same object in memory or not, rather than comparing their values. They are particularly useful when working with mutable objects like lists, dictionaries, and instances of custom classes.

Identity (is) operator checks if two variables refer to the same object in memory. It returns True if the memory location of both variables is the same.

>>> x = [1, 2, 3]
>>> y = x
>>> result = x is y
>>> print(result)
True

Negated Identity (is not) operator checks if two variables do not refer to the same object in memory. Returns True if the memory location of both variables is different.

>>> x = [1, 2, 3]
>>> y = [1, 2, 3]
>>> result = x is not y
>>> print(result)
True

Identity operators are useful when you want to compare objects by reference rather than by their content. They help you determine whether two variables point to the same object or not.

Logical operators

Logical Operators in Python are used to combine or manipulate Boolean values (True or False). They allow you to create more complex conditions by joining multiple conditions together.

Logical AND (and) operator returns True if both operands, the left-hand side and the right-hand side are True, otherwise returns False.

>>> True and True
True
>>> True and False
False
>>> False and False
False

Logical OR (or) operator returns True if at least one operand is True, otherwise returns False.

>>> True or True
True
>>> True or False
True
>>> False or False
False

Logical NOT (not) operator negates the value of a condition. It returns the opposite Boolean value of the operand.

>>> not True
False
>>> not False
True

Logical operators are essential for controlling the flow of your program based on different combinations of conditions. They help you create more sophisticated decision-making logic.

Operator precedence

Operator precedence determines the order in which operators are evaluated when an expression contains multiple operators. It ensures that expressions are evaluated correctly by following a set of rules. The operators' priority order is as follows:

  1. Parentheses (): Highest precedence. Expressions within parentheses are evaluated first.
  2. Exponentiation **
  3. Multiplication *, Division /, Floor Division //, Modulo %: These operators are evaluated from left to right.
  4. Addition +, Subtraction -: These operators are evaluated from left to right.
  5. Bitwise Shift <<, >>: These operators are evaluated from left to right.
  6. Bitwise AND &
  7. Bitwise XOR ^
  8. Bitwise OR |
  9. Comparison Operators (<, <=, >, >=, ==, !=): These are evaluated from left to right.
  10. Logical NOT not
  11. Logical AND and
  12. Logical OR or

Here is an example of addition and multiplication operators being used. It can be easily noticed that using brackets totally changes a result.

>>> result = 3 + 5 * 2
>>> print(result)
13
>>> result = (3 + 5) * 2
>>> print(result)
16

Understanding operator precedence is crucial for writing accurate and predictable code. If you're unsure about the order of evaluation, you can use parentheses to explicitly define the order.

What's next?

Subscribe to receive more posts like this directly to your email!

IdeasπŸ’‘, questions❔❓ ? Feel free to start the discussion πŸ—£οΈπŸŽ™οΈ!

Python Basics: Loops and conditional statements
Loops and conditional statements are fundamental constructs that empower programmers to create dynamic and responsive programs. These tools enable the execution of specific code blocks based on certain conditions, as well as the repetitive execution of code to process data efficiently.

Ready for challenges? πŸ‘‡πŸ‘‡πŸ‘‡

Python Basics: Brain teasers
In the world of programming, the road to expertise is paved with challenges. Don’t shy away from solving programming problems; instead, embrace them as opportunities for growth.