⚙️
Частый вопрос на собеседовании: «Какая типизация у языка Python?»
Давайте разберемся, что такое типизация языков программирования и какие виды типизации бывают.
Типизация языков программирования — это то, как различные языки распознают типы переменных. Она определяет, как вы будете работать с типами переменных: нужно ли их задавать изначально, можно ли изменять и так далее.
Типизация бывает:
▫️динамическая и статическая,
##############
❗️
В языках со статической типизацией программист прописывает типы переменных. В примере кода статически типизированного языка C++ обязательно указывается тип переменных, в данном случае — int:
int a = 8;
int b = 2;
Статически типизированные языки программирования: Java, C#, C, C++, Go, Pascal, Scala, Rust.
В свою очередь, языки с динамической типизацией ищут ошибки на стадии исполнения. В них можно задать разные типы для одной и той же переменной, и они более гибкие. Например, в Python возможна такая запись, и ошибки не будет:
data = 8
data = "Hello"
Динамически типизированные языки программирования: Python, JavaScript, PHP, Perl, Ruby, Lisp.
##############
❗️
В слабо типизированных языках программирования можно смешивать разные типы данных. Так код получается короче — язык «старается» сам выполнять операции преобразования с разными типами. Впрочем, в таком случае не всегда ясно, как поведёт себя программа. Например, в JavaScript возможна такая запись:
5 + '6'; // '56'
4 * '3'; // 12
2 + true;// 3
false - 4;// -4
При сильной или строгой типизации, как в Python, язык не позволяет смешивать разные типы — то есть, если вы обозначили переменную как число, то добавить к ней строку уже не получится:
foo = "x"
foo = foo + 5
Traceback (most recent call last):
File "<pyshell#3>", line 1, in ?
foo = foo + 5
TypeError: cannot concatenate 'str' and 'int' objects
Языки с сильной типизацией надёжнее. Да и программист, прописывая все преобразования вручную, лучше понимает, как работает его код.
Типизация в Python
Частый вопрос на собеседовании: «Какая типизация у языка Python?»
Давайте разберемся, что такое типизация языков программирования и какие виды типизации бывают.
Типизация языков программирования — это то, как различные языки распознают типы переменных. Она определяет, как вы будете работать с типами переменных: нужно ли их задавать изначально, можно ли изменять и так далее.
Типизация бывает:
▫️динамическая и статическая,
▫️
сильная (строгая) и слабая (нестрогая)##############
❗️
Динамическая и статическая типизация
В языках со статической типизацией программист прописывает типы переменных. В примере кода статически типизированного языка C++ обязательно указывается тип переменных, в данном случае — int:
int a = 8;
int b = 2;
Статически типизированные языки программирования: Java, C#, C, C++, Go, Pascal, Scala, Rust.
В свою очередь, языки с динамической типизацией ищут ошибки на стадии исполнения. В них можно задать разные типы для одной и той же переменной, и они более гибкие. Например, в Python возможна такая запись, и ошибки не будет:
data = 8
data = "Hello"
Динамически типизированные языки программирования: Python, JavaScript, PHP, Perl, Ruby, Lisp.
##############
❗️
Сильная и слабая типизация
В слабо типизированных языках программирования можно смешивать разные типы данных. Так код получается короче — язык «старается» сам выполнять операции преобразования с разными типами. Впрочем, в таком случае не всегда ясно, как поведёт себя программа. Например, в JavaScript возможна такая запись:
5 + '6'; // '56'
4 * '3'; // 12
2 + true;// 3
false - 4;// -4
При сильной или строгой типизации, как в Python, язык не позволяет смешивать разные типы — то есть, если вы обозначили переменную как число, то добавить к ней строку уже не получится:
foo = "x"
foo = foo + 5
Traceback (most recent call last):
File "<pyshell#3>", line 1, in ?
foo = foo + 5
TypeError: cannot concatenate 'str' and 'int' objects
Языки с сильной типизацией надёжнее. Да и программист, прописывая все преобразования вручную, лучше понимает, как работает его код.