Python supports several types of numeric data types: int, float, and complex. These numeric types are used to store numerical values.

In this guide, we will take a closer look at each of these types and learn how to work with them in Python.

## Integers (int)

Integers are whole numbers, positive or negative, without a decimal point. They are represented in Python by the int data type.

For example, the number 1 is an integer, and it is written as such in Python:

```
x = 1
print(type(x)) # Output: <class 'int'>
```

In Python, integers can be of any size and do not have a maximum or minimum value.

You can perform mathematical operations on integers, such as + addition, - subtraction, * multiplication, and / division, using the standard mathematical operators.

```
x = 5
y = 2
print(x + y) # Output: 7
print(x - y) # Output: 3
print(x * y) # Output: 10
print(x / y) # Output: 2.5
```

Note that when two integers are divided in Python 3, the result is always a float.

If you want to perform integer division, you can use the // operator.

`print(x // y) # Output: 2`

## Floats

Floats are numbers with a decimal point. They are represented in Python by the float data type.

For example, the number 1.0 is a float, and it is written as such in Python:

```
x = 1.0
print(type(x)) # Output: <class 'float'>
```

You can perform mathematical operations on floats just like integers, using the standard mathematical operators.

```
x = 5.0
y = 2.0
print(x + y) # Output: 7.0
print(x - y) # Output: 3.0
print(x * y) # Output: 10.0
print(x / y) # Output: 2.5
```

## Complex Numbers

Complex numbers are numbers with both a real and an imaginary part. They are represented in Python by the complex data type. The imaginary part is represented by the letter j in Python.

For example, the number 1+2j is a complex number, and it is written as such in Python:

```
x = 1 + 2j
print(type(x)) # Output: <class 'complex'>
```

You can perform mathematical operations on complex numbers just like integers and floats, using the standard mathematical operators.

```
x = 5 + 3j
y = 2 + 4j
print(x + y) # Output: (7+7j)
print(x - y) # Output: (3-j)
print(x * y) # Output: (-2+22j)
print(x / y) # Output: (0.6-0.2j)
```

## Conversion between data types

It is possible to convert a number from one data type to another using the built-in functions int(), float(), and complex().

```
x = 1
y = 2.5
z = 1 + 2j
print(int(y)) # Output: 2
print(float(x)) # Output: 1.0
print(complex(x)) # Output: (1+0j)
```

It is important to note that when converting a float to an integer, the decimal part of the number will be truncated, not rounded.

Also, when converting a complex number to a float or an int, the imaginary part will be dropped.

```
x = 5.6
print(int(x)) # Output: 5
y = 2 + 3j
print(float(y)) # TypeError: can't convert complex to float
```

## Conclusion

In this guide, we have discussed the three numeric data types in Python: int, float, and complex. We have also learned how to perform mathematical operations on these data types and how to convert between them using built-in functions.

Understanding these data types and how to work with them is crucial for any Python developer, as they are used in various applications, from basic calculations to advanced numerical computing.