admin / 26.08.2018
.
Содержание
Последнее обновление: 23.04.2017
Программа на языке Python состоит из набора инструкций.
Каждая инструкция помещается на новую строку. Например:
print(2 + 3) print(«Hello»)
Большую роль в Python играют отступы. Неправильно поставленный отступ фактически является ошибкой. Например, в следующем случае мы получим ошибку, хотя код будет практически аналогичен приведенному выше:
print(2 + 3) print(«Hello»)
Поэтому стоит помещать новые инструкции сначала строки. В этом одно из важных отличий пайтона от других языков программирования, как C# или Java.
Однако стоит учитывать, что некоторые конструкции языка могут состоять из нескольких строк. Например, условная конструкция if:
if 1 < 2: print(«Hello»)
В данном случае если 1 меньше 2, то выводится строка «Hello». И здесь уже должен быть отступ, так как инструкция print(«Hello») используется не сама по себе, а как часть условной конструкции if. Причем отступ, согласно руководству по оформлению кода, желательно делать из такого количество пробелов, которое кратно 4 (то есть 4, 8, 16 и т.д.) Хотя если отступов будет не 4, а 5, то программа также будет работать.
Таких конструкций не так много, поэтому особой путаницы по поводу где надо, а где не надо ставить пробелы, не должно возникнуть.
Python — регистрозависимый язык, поэтому выражения и или представляют разные выражения. И если вместо метода print для вывода на консоль мы попробуем использовать метод Print:
Print(«Hello World»)
то у нас ничего не получится.
Для отметки, что делает тот или иной участок кода, применяются комментарии. При трансляции и выполнении программы интерпретатор игнорирует комментарии, поэтому они не оказывают никакого влияния на работу программы.
Комментарии в Python бывают блочные и строчные. Все они предваряются знаком решетки (#).
Блочные комментарии ставятся в начале строки:
# Вывод сообщения на консоль print(«Hello World»)
Строчные комментарии располагаются на той же строке, что и инструкции языка:
print(«Hello World») # Вывод сообщения на консоль
Хорошей практикой программирования является размещения на первой строке специальной инструкции — шебанга (shebang), который представляет решетки с восклицательным знаком — своего рода особого комментария с указанием того, что делает данный скрипт.
#! Первая программа на Python print(«Hello World») # Вывод сообщения на консоль
Python предоставляет ряд встроенных функций. Некоторые из них используются очень часто, особенно на начальных этапах изучения языка, поэтому рассмотрим их.
Основной функцией для вывода информации на консоль является функция print(). В качестве аргумента в эту функцию передается строка, которую мы хотим вывести:
print(«Hello Python»)
Если же нам необходимо вывести несколько значений на консоль, то мы можем передать их в функцию print через запятую:
print(«Full name:», «Tom», «Smith»)
В итоге все переданные значения склеятся через пробелы в одну строку:
Если функция print отвечает за вывод, то функция input отвечает за ввод информации. В качестве необязательного параметра эта функция принимает приглашение к вводу и возвращает введенную строку, которую мы можем сохранить в переменную:
name = input(«Введите имя: «) print(«Привет», name)
Консольный вывод:
НазадСодержаниеВперед
.
В этом разделе в основном объясняется операторы Python. Вот простой пример 4 + 5 = 9. Пример, 4 и 5 называются операндами, оператор "+" называется.
Язык Python поддерживает следующие типы операторов:
Пусть один оператор, чтобы узнать Python.
Следующие допущения переменная а 10, Ь является переменной величиной 20:
операторы | описание | примеров |
---|---|---|
+ | Плюс — два объекта добавлены | а + выход 30 б |
— | Сохранить — получить отрицательное число вычитается из другого числа или | а — Ь Выход -10 |
* | Умножение — перемножить два числа или возвращает строку повторяется несколько раз | выход 200 * б |
/ | Кроме того — х делится на у | б / 2 выход |
% | Modulo — возвращает остаток деления | б% в 0 выход |
** | Мощность — возвращает х, возведенное в степени у | а ** б 10 20-й мощности, выход +100000000000000000000 |
// | Take делящихся — Возвращает целую часть частного | 9 // 2 выхода 4, выход 9,0 // 2,0 4,0 |
Следующий пример демонстрирует Python все арифметические операторы в действии:
#!/usr/bin/python # -*- coding: UTF-8 -*- a = 21 b = 10 c = 0 c = a + b print «1 — c 的值为:», c c = a — b print «2 — c 的值为:», c c = a * b print «3 — c 的值为:», c c = a / b print «4 — c 的值为:», c c = a % b print «5 — c 的值为:», c # 修改变量 a 、b 、c a = 2 b = 3 c = a**b print «6 — c 的值为:», c a = 10 b = 5 c = a//b print «7 — c 的值为:», c
Попробуйте »
Примеры вышеуказанного вывода:
1 — c 的值为: 31 2 — c 的值为: 11 3 — c 的值为: 210 4 — c 的值为: 2 5 — c 的值为: 1 6 — c 的值为: 8 7 — c 的值为: 2
Следующие допущения переменная а 10, Ь является переменной величиной 20:
операторы | описание | примеров |
---|---|---|
== | Равный — сравните объекты для равенства | (A == B) возвращает значение False. |
! = | Это не равно — сравнить два объекта не равны | (A! = B) возвращает истину. |
<> | Это не равно — сравнить два объекта не равны | (A <> б) возвращает истину. Этот оператор подобен! =. |
> | Больше — Возвращает ли х больше у | (A> B) возвращает значение False. |
< | Меньше — Возвращает ли х меньших у. Все операторы сравнения возвращают 1 для истинного и 0 для лжи. Это соответственно специальные переменные ложные и истинные эквивалентности. Обратите внимание, что эти переменные капитализации имя. | (A <B) возвращает истину. |
> = | Больше или равно — Возвращает ли х больше или равно у. | (A> = B) возвращает значение False. |
<= | Меньше или равно — Возвращает ли х меньше или равно у. | (A <= B) возвращает истину. |
Следующий пример иллюстрирует сравнение всех операций Python:
#!/usr/bin/python # -*- coding: UTF-8 -*- a = 21 b = 10 c = 0 if ( a == b ): print «1 — a 等于 b» else: print «1 — a 不等于 b» if ( a != b ): print «2 — a 不等于 b» else: print «2 — a 等于 b» if ( a <> b ): print «3 — a 不等于 b» else: print «3 — a 等于 b» if ( a < b ): print «4 — a 小于 b» else: print «4 — a 大于等于 b» if ( a > b ): print «5 — a 大于 b» else: print «5 — a 小于等于 b» # 修改变量 a 和 b 的值 a = 5; b = 20; if ( a <= b ): print «6 — a 小于等于 b» else: print «6 — a 大于 b» if ( b >= a ): print «7 — b 大于等于 b» else: print «7 — b 小于 b»
Примеры вышеуказанного вывода:
1 — a 不等于 b 2 — a 不等于 b 3 — a 不等于 b 4 — a 大于等于 b 5 — a 大于 b 6 — a 小于等于 b 7 — b 大于等于 b
Следующие допущения переменная а 10, Ь является переменной величиной 20:
операторы | описание | примеров |
---|---|---|
= | Простой оператор присваивания | с = а + Ь а + Ь операция будет присвоить результат C |
+ = | Оператор присваивания Добавление | с + = а эквивалентно С = С + а |
— = | Оператор присваивания Вычитание | с — = а эквивалентно с = С — |
* = | Оператор присваивания Умножение | эквивалентно с * = а с = с * а |
/ = | Оператор присваивания Отдел | с / = а эквивалентно с = с / а |
% = | Оператор присваивания Modulo | C% = а эквивалентно С = С% а |
** = | Оператор присваивания Возведение | с ** = а эквивалентно С = С ** в |
// = | Возьмем оператор присваивания, делящееся | с // = а эквивалентно С = С // |
Следующий пример демонстрирует оператор присваивания всех операций Python:
#!/usr/bin/python # -*- coding: UTF-8 -*- a = 21 b = 10 c = 0 c = a + b print «1 — c 的值为:», c c += a print «2 — c 的值为:», c c *= a print «3 — c 的值为:», c c /= a print «4 — c 的值为:», c c = 2 c %= a print «5 — c 的值为:», c c **= a print «6 — c 的值为:», c c //= a print «7 — c 的值为:», c
Примеры вышеуказанного вывода:
1 — c 的值为: 31 2 — c 的值为: 52 3 — c 的值为: 1092 4 — c 的值为: 52 5 — c 的值为: 2 6 — c 的值为: 2097152 7 — c 的值为: 99864
Битовые операторы рассматриваются двоичные числа, чтобы произвести расчет. Python является правилом Побитовая следующим образом:
В качестве переменной в следующей таблице 60, б 13.
операторы | описание | примеров |
---|---|---|
& | Побитовое и оператор: два значения, участвующие в операции, если оба соответствующие биты равны 1, то результат бит равен 1, 0 в противном случае | (A & B) выход 12, бинарная информация: 0000 1100 |
| | Побитовая или оператор: до тех пор, как два соответствующий двоичный бит равен 1, результирующий бит равен 1. | (A | B) выход 61, бинарная информация: 00111101 |
^ | Побитовое исключающее ИЛИ оператор: Когда два соответствующих двоичным немного отличается, и результат 1 | (А ^ б) выход 49, бинарная информация: 00110001 |
~ | Битовые операторы: каждый двоичный бит данных инверсии, то есть от 1 до 0, от 0 до 1 | (~ A) -61 выход, бинарная информация: 1100 0011 в символическом виде дополнительного кода двоичного числа. |
<< | Левые операторы мобильной связи: каждый двоичный операнды все осталось некоторое количество битов, указанных цифрой "<<" справа от десятичной ходов, отбрасывая высокие и более низкие 0s. | а << 2 выхода 240 Binary интерпретация: 11110000 |
>> | Правильные операторы мобильной связи: на каждый двоичный ">>" левый операнд Несколько все в порядке, ">>" справа от числа битов указанного | A >> 2 выход 15, бинарная информация: 0000 1111 |
Следующий пример демонстрирует Python все битовые операции:
#!/usr/bin/python # -*- coding: UTF-8 -*- a = 60 # 60 = 0011 1100 b = 13 # 13 = 0000 1101 c = 0 c = a & b; # 12 = 0000 1100 print «1 — c 的值为:», c c = a | b; # 61 = 0011 1101 print «2 — c 的值为:», c c = a ^ b; # 49 = 0011 0001 print «3 — c 的值为:», c c = ~a; # -61 = 1100 0011 print «4 — c 的值为:», c c = a << 2; # 240 = 1111 0000 print «5 — c 的值为:», c c = a >> 2; # 15 = 0000 1111 print «6 — c 的值为:», c
Примеры вышеуказанного вывода:
1 — c 的值为: 12 2 — c 的值为: 61 3 — c 的值为: 49 4 — c 的值为: -61 5 — c 的值为: 240 6 — c 的值为: 15
Язык Python поддерживает логические операторы, предположение о том, что переменная 10, B 20:
операторы | логическое выражение | описание | примеров |
---|---|---|---|
и | х и у | Логическое "и" — если х ложна, х и у возвращает значение False, в противном случае она возвращает оценку у. | (А и Б) возвращает 20. |
или | х или у | Логическое "или" — Если х не равен нулю, то она возвращает значение х, иначе она возвращает оценку у. | (A или B) возвращает 10. |
не | не х | Логическое "не" — Если х, правда, она возвращает значение False. Если х False, то она возвращает значение True.
Язык программирования Python за 10 минут |
нет (а и б) возвращает значение False |
Примеры вышеуказанного вывода:
#!/usr/bin/python # -*- coding: UTF-8 -*- a = 10 b = 20 if ( a and b ): print «1 — 变量 a 和 b 都为 true» else: print «1 — 变量 a 和 b 有一个不为 true» if ( a or b ): print «2 — 变量 a 和 b 都为 true,或其中一个变量为 true» else: print «2 — 变量 a 和 b 都不为 true» # 修改变量 a 的值 a = 0 if ( a and b ): print «3 — 变量 a 和 b 都为 true» else: print «3 — 变量 a 和 b 有一个不为 true» if ( a or b ): print «4 — 变量 a 和 b 都为 true,或其中一个变量为 true» else: print «4 — 变量 a 和 b 都不为 true» if not( a and b ): print «5 — 变量 a 和 b 都为 false,或其中一个变量为 false» else: print «5 — 变量 a 和 b 都为 true»
Примеры вышеуказанного вывода:
1 — 变量 a 和 b 都为 true 2 — 变量 a 和 b 都为 true,或其中一个变量为 true 3 — 变量 a 和 b 有一个不为 true 4 — 变量 a 和 b 都为 true,或其中一个变量为 true 5 — 变量 a 和 b 都为 false,或其中一个变量为 false
В дополнение к некоторым из перечисленных выше операторов, Python также поддерживает оператор-член, тест содержит ряд элементов, включая строки, списки или кортежи.
операторы | описание | примеров |
---|---|---|
в | Если вы нашли значение в указанной последовательности возвращает значение ИСТИНА, в противном случае значение False. | х в у последовательности, возвращает истину, если х в у последовательности. |
а не в | Если значение не найден в указанной последовательности Возвращает значение True, в противном случае значение False. | х не у последовательности, если х не у последовательность возвращает значение True. |
Следующий пример демонстрирует все члены действий оператора Python:
#!/usr/bin/python # -*- coding: UTF-8 -*- a = 10 b = 20 list = [1, 2, 3, 4, 5 ]; if ( a in list ): print «1 — 变量 a 在给定的列表中 list 中» else: print «1 — 变量 a 不在给定的列表中 list 中» if ( b not in list ): print «2 — 变量 b 不在给定的列表中 list 中» else: print «2 — 变量 b 在给定的列表中 list 中» # 修改变量 a 的值 a = 2 if ( a in list ): print «3 — 变量 a 在给定的列表中 list 中» else: print «3 — 变量 a 不在给定的列表中 list 中»
Примеры вышеуказанного вывода:
1 — 变量 a 不在给定的列表中 list 中 2 — 变量 b 不在给定的列表中 list 中 3 — 变量 a 在给定的列表中 list 中
тождественный оператор используется для сравнения двух объектов единиц хранения
операторы | описание | примеров |
---|---|---|
является | судит два идентификатора не ссылаются из объекта | х равно у, если идентификатор (х) равенID (у), возвращается 1 Результаты |
не | Не судить два идентификатора не ссылаться из различных объектов | х не у, если идентификатор (х) не равенидентификатору (у). не возвращается 1 Результаты |
Следующий пример демонстрирует идентичность всех операций операторов Python:
#!/usr/bin/python # -*- coding: UTF-8 -*- a = 20 b = 20 if ( a is b ): print «1 — a 和 b 有相同的标识» else: print «1 — a 和 b 没有相同的标识» if ( id(a) == id(b) ): print «2 — a 和 b 有相同的标识» else: print «2 — a 和 b 没有相同的标识» # 修改变量 b 的值 b = 30 if ( a is b ): print «3 — a 和 b 有相同的标识» else: print «3 — a 和 b 没有相同的标识» if ( a is not b ): print «4 — a 和 b 没有相同的标识» else: print «4 — a 和 b 有相同的标识»
Примеры вышеуказанного вывода:
1 — a 和 b 有相同的标识 2 — a 和 b 有相同的标识 3 — a 和 b 没有相同的标识 4 — a 和 b 没有相同的标识
В следующей таблице перечислены от самого высокого до самого низкого приоритета всех операторов:
операторы | описание |
---|---|
** | Индекс (наивысший приоритет) |
~ + — | Побитовая инверсия, унарный плюс и минус (последние два метода по имени + и @ — @) |
* /% // | Умножение, деление и по модулю взять делится |
+ — | Добавление Вычитание |
>> << | Правый, левый оператор |
& | Бит 'И' |
^ | | Битовые операторы |
<= <= >> | сравнение |
<> ==! = | оператор равенства |
=% = / = @ = — = + = * = * = | Операторы присваивания |
это не | тождественный оператор |
не работает в | оператор Член |
не или и | Логические операторы |
Следующий пример демонстрирует все действия Python оператор старшинства:
#!/usr/bin/python # -*- coding: UTF-8 -*- a = 20 b = 10 c = 15 d = 5 e = 0 e = (a + b) * c / d #( 30 * 15 ) / 5 print «(a + b) * c / d 运算结果为:», e e = ((a + b) * c) / d # (30 * 15 ) / 5 print «((a + b) * c) / d 运算结果为:», e e = (a + b) * (c / d); # (30) * (15/5) print «(a + b) * (c / d) 运算结果为:», e e = a + (b * c) / d; # 20 + (150/5) print «a + (b * c) / d 运算结果为:», e
Примеры вышеуказанного вывода:
(a + b) * c / d 运算结果为: 90 ((a + b) * c) / d 运算结果为: 90 (a + b) * (c / d) 运算结果为: 90 a + (b * c) / d 运算结果为: 50
Міністерство освіти та науки, молоді та спорту України
Національний Авіаційний Університет
Інститут аерокосмічних систем управління
Кафедра біокібернетики та аерокосмічної медицини
Лабораторна робота
на тему:
«Вивчення основ програмування на мові Python»
Виконав: студент групи БМ-112 Перевірив: асистент
Мельник О. В. Оникієнко Ю. Ю.
Київ 2013р.
Python — це проста і потужна об’єктно-орієнтована мова програмування високого рівня з чудовими можливостями для обробки лінгвістичних даних.
Python – інтерпретаційна мова, яка дозволяє зекономити час, що витрачається на компіляцію. Інтерпретатор можна використовувати інтерактивне, що дозволяє експериментувати з можливостями мови і створювати фрагменти програм або тестувати окремі функції.
Інтерпретатор – це програма яка виконує Python програми.
При запуску інтерпретатора ми бачимо інформацію про його версію, додаткову інформацію і запрошення >>> вводити оператори Python. У випадку використання Interactive DeveLopment Environment (IDLE) нам доступні додаткові зручності, зокрема у відображенні тексту програми на екрані.
1.3. Значення і типи
1.5. Змінні
1.6. Імена змінних і ключові слова
1.7.
Вирази
1.9. Оператори і операнди
1.10. Порядок операцій
Відповідь вийшла такою ж самою як і у тих виразів зверху. Тому що множення і ділення мають високий приорітет.
2. Стрічки
2.2. Оператор індексування
2.4. Доступ до підстрічок
2.5. Зміни у стрічках
2.6. Речення
3. Списки
3.2. Функція range
3.3. Списки і індекси
3.4. Довжина списку
3.5. Додатково про списки
3.6. Оператор del
4. Кортежі
5. Набори
Висновок
У цій лабораторній роботі дізнався що таке програма Python та як нею користуватись. А також вивчив багато змінних та як писати програми в даному нам інтерпретаторі.
Здійснити арифметичні операції зі стрічкою msg.
Створіть файл test.py, який містить стрічку msg . Використайте наступні оператори і поясніть отримані результати.
>>> from test import msg
>>> msg
Напишіть програму перетворення списку стрічок в одну стрічку.
Напишіть for цикл, який обробить phrase1 визначивши довжину кожного елементу і результати збереже в новому списку lengths. (Створіть пустий список lengths = []. Далі використовуйте метод append() в тілі циклу для додавання довжин до списку).
Визначіть змінну silly, яка буде містити стрічку ’newly formed bland ideas are inexpressible in an infuriating way’ і напишіть програму її перетворення в список phrase, який буде містити всі слова silly крім ‘in’.
А также другие работы, которые могут Вас заинтересовать |
||
51427. | Сводные таблицы | 59.5 KB |
Заголовок поля. Надпись описывающая содержимое поля. Элемент поля т. Его поля конкретные значения. | ||
51428. | Работа со списками | 36 KB |
Вводится предложение как список слов. Если число N в предложении меньше 5-ти, то список остается без изменений; если число слов N больше 5-ти, но меньше или равно 10-ти, то список разбивается на два подсписка и т.д. Все подсписки, кроме последнего, должны содержать по 5 слов. | ||
51430. | Родственные отношения | 119.5 KB |
Составить родословную своей семьи, использовав 10-12 отношений родитель. Определить предикат пол для каждого члена семьи. Определить предикаты мать, отец, дядя, тетя, кузен, дед, внук. Определить рекурсивный предикат предок. | ||
51431. | Работа со строками | 40 KB |
Написать предикат выделения первого символа строки, первого символа подстроки в заданной строке. Листинг программы | ||
51432. | Работа со строками | 36 KB |
Дана строка символов, представляющих собой арифметическое выражение. Преобразовать это выражение так, чтобы все плюсы заменить на минусы, все знаки деления на знаки умножения. |
22 Июнь 2016, Python, 34614 просмотров
С некоторого времени в голове крутилась мысль о том, а не написать ли мне небольшую заметку на тему почему язык программирования Python стоит изучать, и более того, создавать на нём программные проекты.
Некоторые из вас знают, что совсем недавно я посетил крупнейшее событие в сообществе Python программистов — PyCon US 2016. Полностью все расходы были покрыты мною самостоятельно без привлечения спонсоров и работодателей. Пожалуй, чтобы посетить такое мероприятие, нужно иметь некоторую эмоциональную привязанность к предмету, и это правда.
Python это язык программирования общего назначения, нацеленный в первую очередь на повышение продуктивности самого программиста, нежели кода, который он пишет. Говоря простым человеческим языком, на Python можно написать практически что угодно (веб-/настольные приложения, игры, скрипты по автоматизации, комплексные системы расчёта, системы управления жизнеобеспечением и многое многое другое) без ощутимых проблем. Более того, порог вхождения низкий, а код во многом лаконичный и понятный даже тому, кто никогда на нём не писал. За счёт простоты кода, дальнейшее сопровождение программ, написанных на Python, становится легче и приятнее по сравнению с Java или C++. А с точки зрения бизнеса это влечёт за собой сокращение расходов и увеличение производительности труда сотрудников.
Для демонстрации лаконичности рассмотрим код на Python и Java, который открывает файл и сохраняет его содержимое в переменную:
Python:
Java:
Код на Java использует обновлённый интерфейс для работы с системой ввода-вывода. Старый способ выглядел бы ещё ужаснее 🙂
Грош цена даже самому продвинутому языку программирования, если до него никому нет дела. Одним из составляющих успеха любой технологии является сообщество, созданное вокруг неё. Именно оно предопределяет будущий вектор развития путём совместных усилий. Сообщество вокруг Python одно из самых сильных в мире IT.
Это сложный хорошо организованный и постоянно развивающийся организм. Помимо сотни тысяч индивидуальных разработчиков и небольших софтверных компаний, Python поддерживают такие гиганты IT как:
… и многие многие другие. Впечатляет, не правда ли? Что же касается крупных и популярных проектов, написанных на Python то это такие монстры как:
и я уверен ещё множество других интересных и популярных приложений, которые я забыл здесь перечислить (велком в комментарии).
О чём это может говорить? О многом. А самое главное о том, что крупные корпорации не боятся строить свой бизнес вокруг Python, они уверены в том, что технология будет жить, а следовательно проблем с поиском специалистов ждать не стоит. Более того, разнообразие приложений также радует, что свидетельствует о широком круге задач, которые Python решает мастерски.
В заметке про книгу «Структура и Интерпретация Компьютерных Программ«, я писал о том, что она была взята за основу в качестве учебного материала для вводного курса по программированию в MIT, компьютерным языком на тот момент выступал диалект Lisp — Scheme.
Времена меняются, сейчас в качестве цифрового lingua franca лидирует что…? Правильно, Python. Именно его используют в качестве надёжного инструмента в столь удивительном ремесле.
У читателя незнакомого с Python может сложиться впечатление, что он панацея от всех бед, серебряная пуля и лекарство от рака. Но не всё так радужно и прекрасно. Как и у всего, у Python есть ряд своих недостатков, которые порой могут быть критическими и влиять на выбор не в пользу змеи.
Одним из главных недостатков является его относительно низкая скорость выполнения. Python является языком с полной динамической типизацией, автоматическим управлением памятью. Если на первый взгляд это может казаться преимуществом, то при разработке программ с повышенным требованием к эффективности, Python может значительно проигрывать по скорости своим статическим братьям (C/C++, Java, Go). Что касается динамических собратьев (PHP, Ruby, JavaScript), то здесь дела обстоят намного лучше, Python в большинстве случаев выполняет код быстрее за счет предварительной компиляции в байт-код и значительной части стандартной библиотеки, написанной на Си. На конференциях мне довелось пообщаться с ребятами из крупных компаний вроде Wargaming, у многих из них наблюдается тренд перехода в сторону статики, и чаще всего это Go, Rust.
Интересный доклад про скорость и оптимизацию CPython (родная реализация языка на Си) был прочитан на PiterPy 2015 в Санкт-Петербурге:
Для начинающих программистов, язык программирования с динамической типизацией на первый взгляд (и на второй и даже на третий) может казаться отдушиной, райским наслаждением, особенно для тех, кто ранее имел дело со «статикой». Но есть и обратная сторона луны. С ростом кодовой базы (а это часто неизбежный процесс в успешных проектах), следить за типом передаваемых друг другу данных бывает очень сложно (а при отсутствии внятных доков и тестов практически невозможно), отсюда появляются проблемы, когда, например, у None пытаются вызвать метод или обратиться к атрибуту в процессе выполнения кода. Для решения такого рода проблем динамические языки обрастают всевозможными костылями, свистелками и перделками в виде type annotations, проектов mypy по статическому анализу кода и так далее. Это же в свою очередь накладывает негативный оттенок на эстетическую сторону кода.
В связи с ограничениями языка, появляются альтернативные реализации интерпретаторов: PyPy, Pyston, Jython, Cython и многие другие. Сейчас тренд хорошо заметен именно в эту сторону, например Pyston разрабатывается в стенах т.н. Мекки Python программистов — компании Dropbox 🙂
Несмотря на ряд проблем исторически присущих Python, он продолжает оставаться лидирующим инструментом в ряде ниш:
Наверняка я ещё что-то забыл. В общем, Python рулит!
FILED UNDER : IT