Стало интересно, что такое типизация и как она связана с программированием и Python в частности?

<aside> 💡 Типизация — это способ распознавания типов данных переменных в языке программирования.

</aside>

Существует три классификации языков программирования по используемой типизации:

Статическая и динамическая типизация

Статическая типизация предполагает, что тип переменной задаётся один раз, при написании кода, и больше не меняется. Динамическая типизация позволяет менять тип переменной в ходе выполнения программы, конкретный тип определяется во время выполнения программы.

C++ — язык со статической типизацией:

#include <iostream>
using namespace std;

int main()
{    
    int number;

    cout << "Enter an integer: ";
    cin >> number;

    cout << "You entered " << number;
    return 0;
}

Python — язык с динамической типизацией:

a = input("Enter an integer: ")
a = int(a)
print("You entered", a)

Явная и неявная типизация

При явной типизации тип переменной указывается явно, при неявной он может не указываться, и он будет определён во время выполнения программы.

В части языков программирования с явной типизацией имеются элементы неявной типизации, когда можно не указывать тип переменной, но при этом указать её значение, и транслятор сама выведет нужный тип.

Java — язык с явной типизацией:

import java.util.Scanner;

public class HelloWorld {

    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        System.out.print("Enter a number: ");

				// В number может храниться только число
        int number = reader.nextInt();

        System.out.println("You entered: " + number);
    }
}

Python — язык с неявной типизацией (можно указать тип переменной явно, но это ни на что не влияет и предназначено всего лишь для удобства программиста):

a = int(input())       # Здесь тип неявный
b: int = int(input())  # А здесь он явный, но ни на что не влияет

print(a + b)

Сильная и слабая типизация