Operators
Python Operators
In Python, operators are special symbols or characters that are used to perform operations on values or variables. Python has several types of operators, including arithmetic, assignment, comparison, logical, bitwise, and membership operators. Here's a brief overview of each type of operator:
Arithmetic Operators:
- Addition (
+
) - Subtraction (
-
) - Multiplication (
*
) - Division (
/
) - Modulus (
%
) - Exponentiation (
**
) - Floor division (
//
)
Assignment Operators:
- Simple assignment (
=
) - Add and assign (
+=
) - Subtract and assign (
-=
) - Multiply and assign (
*=
) - Divide and assign (
/=
) - Modulus and assign (
%=
) - Exponentiation and assign (
**=
) - Floor division and assign (
//=
)
Comparison Operators:
- Equal to (
==
) - Not equal to (
!=
) - Greater than (
>
) - Less than (
<
) - Greater than or equal to (
>=
) - Less than or equal to (
<=
)
Logical Operators:
- And (
and
) - Or (
or
) - Not (
not
)
Bitwise Operators:
- Bitwise AND (
&
) - Bitwise OR (
|
) - Bitwise XOR (
^
) - Bitwise NOT (
~
) - Left shift (
<<
) - Right shift (
>>
)
Membership Operators:
- In (
in
) - Not in (
not in
)
Now, let's dive into each type of operator in more detail.
Arithmetic Operators
Arithmetic operators are used to perform mathematical operations such as addition, subtraction, multiplication, division, and more. Here are some examples:
a = 10
b = 3
# Addition
print(a + b) # Output: 13
# Subtraction
print(a - b) # Output: 7
# Multiplication
print(a * b) # Output: 30
# Division
print(a / b) # Output: 3.3333333333333335
# Modulus
print(a % b) # Output: 1
# Exponentiation
print(a ** b) # Output: 1000
# Floor division
print(a // b) # Output: 3
As a specific callout, the modulus operator (%
) in Python returns the remainder of the division of two numbers. It can be used for various purposes, such as determining if a number is even or odd, or if it is divisible by another number. Here are some examples:
a = 10
b = 3
# Modulus
print(a % b) # Output: 1
# Even or odd
print(a % 2 == 0) # Output: True (a is even)
# Divisibility
print(b % 2 == 0) # Output: False (b is odd)
Assignment Operators
Assignment operators are used to assign values to variables. They can also perform arithmetic operations and assign the result to the same variable. Here are some examples:
a = 10
b = 3
# Simple assignment
c = a
print(c) # Output: 10
# Add and assign
a += b
print(a) # Output: 13
# Subtract and assign
a -= b
print(a) # Output: 10
# Multiply and assign
a *= b
print(a) # Output: 30
# Divide and assign
a /= b
print(a) # Output: 10.0
# Modulus and assign
a %= b
print(a) # Output: 1.0
# Exponentiation and assign
a **= b
print(a) # Output: 1000.0
# Floor division and assign
a //= b
print(a) # Output: 333.0
Comparison Operators
Comparison operators are used to compare values and return a Boolean value (True or False) based on the comparison. Here are some examples:
a = 10
b = 3
# Equal to
print(a == b) # Output: False
# Not equal to
print(a != b) # Output: True
# Greater than
print(a > b) # Output: True
# Less than
print(a < b) # Output: False
# Greater than or equal to
print(a >= b) # Output: True
# Less than or equal to
print(a <= b) # Output: False
Logical Operators
Logical operators are used to combine Boolean values and return a Boolean value based on the result. Here are some examples:
a = True
b = False
# And
print(a and b) # Output: False
# Or
print(a or b) # Output: True
# Not
print(not a) # Output: False
Bitwise Operators
Bitwise operators are used to perform bitwise operations on integer values. Here are some examples:
a = 10 # Binary: 1010
b = 3 # Binary: 0011
# Bitwise AND
print(a & b) # Output: 2 (Binary: 0010)
# Bitwise OR
print(a | b) # Output: 11 (Binary: 1011)
# Bitwise XOR
print(a ^ b) # Output: 9 (Binary: 1001)
# Bitwise NOT
print(~a) # Output: -11
# Left shift
print(a << 2) # Output: 40 (Binary: 101000)
# Right shift
print(a >> 2) # Output: 2 (Binary: 10)
In Python, integers can be represented in binary, octal, or hexadecimal notation using the prefixes 0b
, 0o
, and 0x
, respectively. This can be useful for working with bitwise operators or for representing data in a compact form. Here are some examples:
a = 10
b = 0b1010 # Binary representation of 10
c = 0o12 # Octal representation of 10
d = 0xA # Hexadecimal representation of 10
print(a == b == c == d) # Output: True (all represent the same value)
Membership Operators
Membership operators are used to test if a value or variable is a member of a sequence, such as a string
or list
. Here are some examples:
a = "Hello, World!"
# In
print("Hello" in a) # Output: True
# Not in
print("Python" not in a) # Output: True
Common Pitfalls
There are several common pitfalls to be aware of when using operators in Python. Here are a few of them:
=
vs==
: One of the most common mistakes in Python is confusing the assignment operator (=
) with the equality operator (==
). The assignment operator is used to assign a value to a variable, while the equality operator is used to compare two values. For example,a = 10
assigns the value 10 to the variablea
, whilea == 10
compares the value ofa
to 10 and returnsTrue
orFalse
.- Mutable vs. Immutable Data Types: Python has two main categories of data types: mutable and immutable. Mutable data types, such as lists and dictionaries, can be changed in place, while immutable data types, such as strings and tuples, cannot be changed once they are created. This can lead to unexpected behavior if you try to modify an immutable data type. For example, compare the two:
s = "abc"
print(s[0]) # Prints “a”
s[0] = “d” # Will return: TypeError: 'str' object does not support item assignment
lst = [1, 2, 3]
print(lst[0]) # Prints “1”
lst[0] = 4 # Will not error, lst will be [4, 2, 3]
- Order of Evaluation: As mentioned in the previous section on operator precedence, it's important to be aware of the order in which Python evaluates expressions. For example, if you are trying to compare two expressions, make sure that you use parentheses to group the expressions correctly. Otherwise, you may get unexpected results.
- Floating Point Precision: When working with floating-point numbers in Python, be aware that they can be subject to rounding errors due to the way they are represented internally. This can lead to unexpected results when performing arithmetic operations. To avoid this, you can use the
decimal
module orround()
function to control the precision of your calculations.