Привет всем! Заметил, что на форуме нет уроков по языку программирования Python.
Я решил исправить это и написать уроки (гайды) которые, возможно, помогут юному падавану приблизиться к уровню мастера джедая.
Я еще учу этот интересный язык и надеюсь, что более знающие люди помогут дополнить мои статьи.
Немного теории:
Что такое Python?!
Python – это интерпретируемый язык программирования: исходный код частями
преобразуется в машинный в процессе выполнения специальной программой —
интерпретатором.
Python характеризуется ясным синтаксисом. Читать код на этом языке
программирования достаточно легко, т.к. в нем мало вспомогательных элементов, а
правила языка заставляют программистов делать отступы. Понятно, что хорошо
оформленный текст с малым количеством отвлекающих элементов читать и понимать
легче.
Python – это полноценный, можно сказать универсальный, язык программирования.
Он поддерживает объектно-ориентированное программирование (на самом деле он и
разрабатывался как объектно-ориентированный язык).
Также Python распространяется свободно на основании лицензии подобной GNU.
General Public License.
Где используется Python?
Компания Google использует Python в своей поисковой системе.
Такие компании, как Intel, Cisco, Hewlett-Packard, Seagate, Qualcomm и IBM, используют Python для тестирования аппаратного обеспечения.
Служба коллективного использования видеоматериалов YouTube в значительной степени реализована на Python.
NSA использует Python для шифрования и анализа разведданных.
Компании JPMorgan Chase, UBS, Getco и Citadel применяют Python для прогнозирования финансового рынка.
Популярная программа BitTorrent для обмена файлами в пиринговых сетях написана на языке Python.
Популярный веб-фреймворк App Engine от компании Google использует Python в качестве прикладного языка программирования.
Где скачать Python?
во многих Linux системах Python присутствует изначально.
Просто введите в консоли: > python3
Если же его у вас не оказалась, в консоли вводим: > apt-get install python3
Для ArchLinux:
В *NIX системах нет предустановленной среды IDLE , установить ее можно с помощью команды: > apt-get install idle3
Для запуска используется команда: > idle3
Так же вам необходим удобный текстовый редактор с подсветкой синтаксиса:
Что бы запустить среду Idle в Windows , в пуске в поиске вбейте Idle
link removed
Запуск скриптов через консоль:
Основное различие версий это команды , подробнее вы можете посмотреть под спойлером.
Python zen
философия от питонщика
Время первой программы:
не будем нарушать традиции и сделаем нашей первой программой "Hello world"
в текстовом редакторе/среде IDLE создайте новый документ и напишите:
print('Hello world')
после этого нажмите F5 согласитесь на сохранение ,так же можно сделать все это в интерпретаторе
Я решил исправить это и написать уроки (гайды) которые, возможно, помогут юному падавану приблизиться к уровню мастера джедая.
Я еще учу этот интересный язык и надеюсь, что более знающие люди помогут дополнить мои статьи.
Немного теории:
Что такое Python?!
Python – это интерпретируемый язык программирования: исходный код частями
преобразуется в машинный в процессе выполнения специальной программой —
интерпретатором.
Python характеризуется ясным синтаксисом. Читать код на этом языке
программирования достаточно легко, т.к. в нем мало вспомогательных элементов, а
правила языка заставляют программистов делать отступы. Понятно, что хорошо
оформленный текст с малым количеством отвлекающих элементов читать и понимать
легче.
Python – это полноценный, можно сказать универсальный, язык программирования.
Он поддерживает объектно-ориентированное программирование (на самом деле он и
разрабатывался как объектно-ориентированный язык).
Также Python распространяется свободно на основании лицензии подобной GNU.
General Public License.
Где используется Python?
Компания Google использует Python в своей поисковой системе.
Такие компании, как Intel, Cisco, Hewlett-Packard, Seagate, Qualcomm и IBM, используют Python для тестирования аппаратного обеспечения.
Служба коллективного использования видеоматериалов YouTube в значительной степени реализована на Python.
NSA использует Python для шифрования и анализа разведданных.
Компании JPMorgan Chase, UBS, Getco и Citadel применяют Python для прогнозирования финансового рынка.
Популярная программа BitTorrent для обмена файлами в пиринговых сетях написана на языке Python.
Популярный веб-фреймворк App Engine от компании Google использует Python в качестве прикладного языка программирования.
Где скачать Python?
Ссылка скрыта от гостей
- официальный сайт Python
Ссылка скрыта от гостей
- скачать Python с офф. сайтаво многих Linux системах Python присутствует изначально.
Просто введите в консоли: > python3
Если же его у вас не оказалась, в консоли вводим: > apt-get install python3
Для ArchLinux:
Код:
sudo pacman -S python3
sudo pacman -S idle3-tools
Для запуска используется команда: > idle3
Так же вам необходим удобный текстовый редактор с подсветкой синтаксиса:
- для Windows: Notepad++, Komodo edit, Atom
- для Linux систем: Komodo edit, Geany , gedit , vim , Atom, emacs и другие.
Что бы запустить среду Idle в Windows , в пуске в поиске вбейте Idle
Запуск скриптов через консоль:
- python3 путь к файлу.py или же находясь в директории с файлом python3 имя файла.py
Основное различие версий это команды , подробнее вы можете посмотреть под спойлером.
Обзор различий синтаксиса python2 и python3.
Print - функция
Оператор print был заменён функцией print(), с именованными аргументами для замены большей части синтаксиса старого оператора print. Примеры:
Python2: print "The answer is", 2*2
Python3: print("The answer is", 2*2)
Python2: print x, # Запятая в конце подавляет перевод строки
Python3: print(x, end=" ") # Добавляет пробел вместо перевода строки
Python2: print # Печатает перевод строки
Python3: print() # Нужно вызвать функцию!
Python2: print >>sys.stderr, "fatal error"
Python3: print("fatal error", file=sys.stderr)
Python2: print (x, y) # Печатает repr((x, y))
Python3: print((x, y)) # Не путать с print(x, y)!
Также вы можете настроить разделитель между элементами, например:
>>>>>> print("There are <", 2**32, "> possibilities!", sep="")
There are <4294967296> possibilities!
Функция print() не поддерживает особенность "программный пробел" старого оператора print. Например, в Python 2, print "A\n", "B" напечатает "A\nB\n"; но в Python 3, print("A\n", "B") напечатает "A\n B\n".
Отображения и итераторы вместо списков
Некоторые хорошо известные методы не возвращают link removed в Python 3:
Python 3 упростил правила для операторов сравнения:
Операторы сравнения (<, <=, >=, >) поднимают исключение TypeError, когда операнды не упорядочиваемы. Таким образом, выражения типа 1 < '', 0 > None или len <= len более не разрешены, и, например, None < None поднимает TypeError, а не возвращает False. Следствием является то, что сортировка списка с разными типами данных больше не имеет смысла - все элементы должны быть сравнимы друг с другом. Обратите внимание, что это не относится к операторам == и !=: объекты различных несравнимых типов всегда неравны друг другу.
builtin.sorted() и list.sort() больше не принимают аргумент cmp, обеспечивающий функцию сравнения. Вместо этого используйте аргумент key. Аргументы key и reverse теперь "keyword-only".
Функция cmp() должна рассматриваться как устаревшая, и специальный метод __cmp__() в Python 3 не поддерживается. Используйте __lt__() для сортировки, __eq__() с __hash__() для сравнения. (Если вам действительно нужна функциональность cmp(), вы можете использовать выражение (a > b) - (a < b) в качестве эквивалента для cmp(a, b).)
Целые числа
Все, что вы знали о бинарных данных и Unicode, изменилось.
Python 3 использует понятия текста и (бинарных) данных вместо строк Unicode и 8-битных строк. Весь текст - Unicode; Однако кодированные Unicode строки представлены в виде двоичных данных. Тип , используемый для хранения текста является link removed, тип, используемый для хранения данных - link removed. Самое большое различие с python 2.x является то, что любая попытка комбинировать текст и данные в Python 3.0 поднимает TypeError, в то время как если бы вы смешивали Unicode и 8-битные строки в Python 2.x, это будет работать, если 8-битная строка содержала только 7-битные (ASCII) символы, но вы получите UnicodeDecodeError, если она содержит не-ASCII символы. Такое поведение вызывало многочисленные скорбные лица на протяжении многих лет.
Как следствие этого изменения в философии, значительная часть кода, который использует Unicode, кодировки или бинарные данные, скорее всего, должна измениться. Это изменения к лучшему, так как в python 2.x были многочисленные ошибки, имеющие отношение к смешиванию закодированного и декодированного текста. Чтобы быть подготовленным к этому, в Python 2.x следует начать использовать Unicode для всего незакодированного текста, и str только для бинарных или закодированных данных . Затем инструмент 2to3 будет делать большую часть работы за вас.
Вы можете больше не использовать литерал u"..." для текста Unicode. Тем не менее, вы должны использовать литерал b"..." для бинарных данных.
Так как str и bytes не могут быть смешаны, вы всегда должны их явно преобразовывать. Используйте str.encode(), чтобы перейти от str к bytes и bytes.decode(), чтобы перейти от bytes к str. Вы также можете использовать bytes(s, encoding=...) и str(b, encoding=...), соответственно.
Как str, тип bytes неизменен. Существует отдельный изменяемый тип для двоичных данных, bytearray. Почти все функции, которые принимают bytes также принимают bytearray.
Все обратные косые черты в "сырых" строковых литералах интерпретируются буквально. Это означает, что "\U" и "\u" в сырых строках не рассматриваются особо. Например, r"\u20ac" это строка из 6 символов в Python 3.0, в то время как в 2.6, ur"\u20ac" был один символ "евро". (Конечно, это изменение влияет только на сырые строковые литералы).
Встроенный абстрактный тип basestring был удален. Используйте str вместо него. str и bytes не имеют достаточно общей функциональности, чтобы оправдать общий базовый класс. Инструмент 2to3 (см. ниже) заменяет каждое вхождение basestring на str.
PEP 3138: repr() для строки больше не экранирует символы, не входящие в набор ASCII. Однако, он по-прежнему экранирует управляющие символы
PEP 3120: Кодировка исходного кода по умолчанию теперь UTF-8.
PEP 3131: не-ASCII символы разрешены в идентификаторах. (Тем не менее, стандартная библиотека остается ASCII, за исключением имен авторов в комментариях.)
Модули StringIO и cStringIO удалены. Вместо этого, импортируйте модуль io и используйте io.StringIO или io.BytesIO для текста и данных соответственно.
Обзор изменений синтаксиса
Этот раздел дает краткий обзор каждого синтаксического изменения Python 3.0.
Новый синтаксис
PEP 3107: аннотации для аргументов функции и возвращаемых значений.
>>> def foo(a: 'x', b: 5 + 6, c: list) -> max(2, 9):
... pass
>>> foo.__annotations__{'a': 'x', 'b': 11, 'c': <class 'list'>, 'return': 9}
PEP 3102: Keyword-only аргументы.
PEP 3104: nonlocal. Переменная во внешней (но не глобальной) области видимости.
>>> def outer():
... x = 1
... def inner():
... x = 2
... print("inner:", x)
... inner()
... print("outer:", x)
…
>>> outer()
inner: 2
outer: 1
>>> def outer():
... x = 1
... def inner():
... nonlocal x
... x = 2
... print("inner:", x)
... inner()
... print("outer:", x)
…
>>> outer()
inner: 2
outer: 2
PEP 3132: Extended Iterable Unpacking
>>> (a, *rest, b) = range(5)
>>> a0
>>> rest[1, 2, 3]
>>> b4
Генераторы словарей: {k: v for k, v in stuff} (то же самое, что и dict(stuff))
Литералы множеств (например, {1, 2}). Заметьте, что {} - это пустой словарь. Используйте set() для пустых множеств. Генераторы множеств: {x for x in stuff}
Новые восьмеричные литералы, например 0o720, вместо старых (0720).
Новые двоичные литералы, например 0b1010. Новая встроенная функция, bin().
Изменённый синтаксис
PEP 3109 and PEP 3134: новый синтаксис выражения raise: raise [expr [from expr]].
"as" и "with" зарезервированные слова.
"True" и "False" и "None" - зарезервированные слова.
Изменено "except exc, var" на "except exc as var".
PEP 3115: Новый синтаксис для метаклассов. Вместо:
class C:
__metaclass__ = M
...
Вы должны использовать:
class C(metaclass=M):
...
Переменная __metaclass__ более не поддерживается.
Генераторы списков больше не поддерживают синтаксическую форму [... for var in item1, item2, ...]. Используйте [... for var in (item1, item2, ...)].
Удаленный синтаксис
PEP 3113: распаковка кортежей в параметрах удалена. Вы больше не можете писать
def foo(a, (b, c)):
...
Пишите
def foo(a, b_c):
b, c = b_c
...
Удалены обратные кавычки (backtick). Используйте repr().
Удалено <>. Используйте !=.
exec - функция. Перестала быть зарезервированным словом.
from module import * запрещено использовать внутри функций.
Встроенные функции
PEP 3135: Новый super(). Теперь вы можете вызывать super() без аргументов и (при условии, что это метод экземпляра, определенный внутри определении класса) класс и экземпляр будут автоматически выбраны. С аргументами, поведение super() остается без изменений.
PEP 3111: raw_input() переименован в input(). Вместо input() в Python 2, вы можете использовать eval(input()).
Добавлена функция next(), вызывающая метод __next__() объекта.
Перемещен intern() в sys.intern().
Удалено: apply(). Вместо apply(f, args) используйте f(*args).
Удалено: callable(). Вместо callable(f) используйте hasattr(f, "__call__"). Функция operator.isCallable() также удалена.
Удалено: coerce().
Удалено: execfile(). Вместо execfile(fn) используйте exec(open(fn).read()).
Удалено: file. Используйте open().
Перемещено: reduce() в functools.reduce()
Перемещено: reload() в imp.reload().
Удалено: dict.has_key(). Используйте оператор in.
Print - функция
Оператор print был заменён функцией print(), с именованными аргументами для замены большей части синтаксиса старого оператора print. Примеры:
Python2: print "The answer is", 2*2
Python3: print("The answer is", 2*2)
Python2: print x, # Запятая в конце подавляет перевод строки
Python3: print(x, end=" ") # Добавляет пробел вместо перевода строки
Python2: print # Печатает перевод строки
Python3: print() # Нужно вызвать функцию!
Python2: print >>sys.stderr, "fatal error"
Python3: print("fatal error", file=sys.stderr)
Python2: print (x, y) # Печатает repr((x, y))
Python3: print((x, y)) # Не путать с print(x, y)!
Также вы можете настроить разделитель между элементами, например:
>>>>>> print("There are <", 2**32, "> possibilities!", sep="")
There are <4294967296> possibilities!
Функция print() не поддерживает особенность "программный пробел" старого оператора print. Например, в Python 2, print "A\n", "B" напечатает "A\nB\n"; но в Python 3, print("A\n", "B") напечатает "A\n B\n".
Отображения и итераторы вместо списков
Некоторые хорошо известные методы не возвращают
- Методы словарей dict.keys(), dict.items() и dict.values() возвращают "отображения" вместо списков. Например, больше не работает: k = d.keys(); k.sort(). Используйте k = sorted(d).
- Соответственно, методы dict.iterkeys(), dict.iteritems() и dict.itervalues() более не поддерживаются.
- map() и filter() возвращают итераторы. Если вам действительно нужен список, быстрым исправлением станет list(map(...)), но часто лучшим исправлением будет использование генераторов списков (особенно когда оригинальный код использует лямбда-выражения), либо переписать код так, чтобы ему не нужен был список как таковой. Особенно сложно, что map() вызывает побочные эффекты функции; правильное преобразование заключается в использовании цикла (создание списка просто расточительно).
- range() теперь ведёт себя как xrange(), но работает со значениями любого размера. xrange() больше не существует.
- zip() возвращает итератор.
Python 3 упростил правила для операторов сравнения:
Операторы сравнения (<, <=, >=, >) поднимают исключение TypeError, когда операнды не упорядочиваемы. Таким образом, выражения типа 1 < '', 0 > None или len <= len более не разрешены, и, например, None < None поднимает TypeError, а не возвращает False. Следствием является то, что сортировка списка с разными типами данных больше не имеет смысла - все элементы должны быть сравнимы друг с другом. Обратите внимание, что это не относится к операторам == и !=: объекты различных несравнимых типов всегда неравны друг другу.
builtin.sorted() и list.sort() больше не принимают аргумент cmp, обеспечивающий функцию сравнения. Вместо этого используйте аргумент key. Аргументы key и reverse теперь "keyword-only".
Функция cmp() должна рассматриваться как устаревшая, и специальный метод __cmp__() в Python 3 не поддерживается. Используйте __lt__() для сортировки, __eq__() с __hash__() для сравнения. (Если вам действительно нужна функциональность cmp(), вы можете использовать выражение (a > b) - (a < b) в качестве эквивалента для cmp(a, b).)
Целые числа
- PEP 0237: long переименован в int.
- PEP 0238: Выражение вида 1/2 возвращает float. Используйте 1//2 для отсечения дробной части. (Этот синтаксис существует с Python 2.2)
- Константа sys.maxint была удалена, с тех пор, как более не существует предела значения целых чисел. Однако, sys.maxsize может быть использован как число, большее любого практического индекса списка или строки. sys.maxsize соответствует "естественному" размеру целого и, как правило, имеет такое же значение, как sys.maxint на той же платформе (при условии одних и те же параметров сборки).
- repr() от длинного целого числа не включает более завершающий символ L, так что код, который безусловно отрезает этот символ, будет отрезать вместо этого последнюю цифру. (Используйте str() вместо этого.)
- Восьмеричные литералы более не имеют формы вида 0720; используйте 0o720.
Все, что вы знали о бинарных данных и Unicode, изменилось.
Python 3 использует понятия текста и (бинарных) данных вместо строк Unicode и 8-битных строк. Весь текст - Unicode; Однако кодированные Unicode строки представлены в виде двоичных данных. Тип , используемый для хранения текста является
Как следствие этого изменения в философии, значительная часть кода, который использует Unicode, кодировки или бинарные данные, скорее всего, должна измениться. Это изменения к лучшему, так как в python 2.x были многочисленные ошибки, имеющие отношение к смешиванию закодированного и декодированного текста. Чтобы быть подготовленным к этому, в Python 2.x следует начать использовать Unicode для всего незакодированного текста, и str только для бинарных или закодированных данных . Затем инструмент 2to3 будет делать большую часть работы за вас.
Вы можете больше не использовать литерал u"..." для текста Unicode. Тем не менее, вы должны использовать литерал b"..." для бинарных данных.
Так как str и bytes не могут быть смешаны, вы всегда должны их явно преобразовывать. Используйте str.encode(), чтобы перейти от str к bytes и bytes.decode(), чтобы перейти от bytes к str. Вы также можете использовать bytes(s, encoding=...) и str(b, encoding=...), соответственно.
Как str, тип bytes неизменен. Существует отдельный изменяемый тип для двоичных данных, bytearray. Почти все функции, которые принимают bytes также принимают bytearray.
Все обратные косые черты в "сырых" строковых литералах интерпретируются буквально. Это означает, что "\U" и "\u" в сырых строках не рассматриваются особо. Например, r"\u20ac" это строка из 6 символов в Python 3.0, в то время как в 2.6, ur"\u20ac" был один символ "евро". (Конечно, это изменение влияет только на сырые строковые литералы).
Встроенный абстрактный тип basestring был удален. Используйте str вместо него. str и bytes не имеют достаточно общей функциональности, чтобы оправдать общий базовый класс. Инструмент 2to3 (см. ниже) заменяет каждое вхождение basestring на str.
PEP 3138: repr() для строки больше не экранирует символы, не входящие в набор ASCII. Однако, он по-прежнему экранирует управляющие символы
PEP 3120: Кодировка исходного кода по умолчанию теперь UTF-8.
PEP 3131: не-ASCII символы разрешены в идентификаторах. (Тем не менее, стандартная библиотека остается ASCII, за исключением имен авторов в комментариях.)
Модули StringIO и cStringIO удалены. Вместо этого, импортируйте модуль io и используйте io.StringIO или io.BytesIO для текста и данных соответственно.
Обзор изменений синтаксиса
Этот раздел дает краткий обзор каждого синтаксического изменения Python 3.0.
Новый синтаксис
PEP 3107: аннотации для аргументов функции и возвращаемых значений.
>>> def foo(a: 'x', b: 5 + 6, c: list) -> max(2, 9):
... pass
>>> foo.__annotations__{'a': 'x', 'b': 11, 'c': <class 'list'>, 'return': 9}
PEP 3102: Keyword-only аргументы.
PEP 3104: nonlocal. Переменная во внешней (но не глобальной) области видимости.
>>> def outer():
... x = 1
... def inner():
... x = 2
... print("inner:", x)
... inner()
... print("outer:", x)
…
>>> outer()
inner: 2
outer: 1
>>> def outer():
... x = 1
... def inner():
... nonlocal x
... x = 2
... print("inner:", x)
... inner()
... print("outer:", x)
…
>>> outer()
inner: 2
outer: 2
PEP 3132: Extended Iterable Unpacking
>>> (a, *rest, b) = range(5)
>>> a0
>>> rest[1, 2, 3]
>>> b4
Генераторы словарей: {k: v for k, v in stuff} (то же самое, что и dict(stuff))
Литералы множеств (например, {1, 2}). Заметьте, что {} - это пустой словарь. Используйте set() для пустых множеств. Генераторы множеств: {x for x in stuff}
Новые восьмеричные литералы, например 0o720, вместо старых (0720).
Новые двоичные литералы, например 0b1010. Новая встроенная функция, bin().
Изменённый синтаксис
PEP 3109 and PEP 3134: новый синтаксис выражения raise: raise [expr [from expr]].
"as" и "with" зарезервированные слова.
"True" и "False" и "None" - зарезервированные слова.
Изменено "except exc, var" на "except exc as var".
PEP 3115: Новый синтаксис для метаклассов. Вместо:
class C:
__metaclass__ = M
...
Вы должны использовать:
class C(metaclass=M):
...
Переменная __metaclass__ более не поддерживается.
Генераторы списков больше не поддерживают синтаксическую форму [... for var in item1, item2, ...]. Используйте [... for var in (item1, item2, ...)].
Удаленный синтаксис
PEP 3113: распаковка кортежей в параметрах удалена. Вы больше не можете писать
def foo(a, (b, c)):
...
Пишите
def foo(a, b_c):
b, c = b_c
...
Удалены обратные кавычки (backtick). Используйте repr().
Удалено <>. Используйте !=.
exec - функция. Перестала быть зарезервированным словом.
from module import * запрещено использовать внутри функций.
Встроенные функции
PEP 3135: Новый super(). Теперь вы можете вызывать super() без аргументов и (при условии, что это метод экземпляра, определенный внутри определении класса) класс и экземпляр будут автоматически выбраны. С аргументами, поведение super() остается без изменений.
PEP 3111: raw_input() переименован в input(). Вместо input() в Python 2, вы можете использовать eval(input()).
Добавлена функция next(), вызывающая метод __next__() объекта.
Перемещен intern() в sys.intern().
Удалено: apply(). Вместо apply(f, args) используйте f(*args).
Удалено: callable(). Вместо callable(f) используйте hasattr(f, "__call__"). Функция operator.isCallable() также удалена.
Удалено: coerce().
Удалено: execfile(). Вместо execfile(fn) используйте exec(open(fn).read()).
Удалено: file. Используйте open().
Перемещено: reduce() в functools.reduce()
Перемещено: reload() в imp.reload().
Удалено: dict.has_key(). Используйте оператор in.
Python zen
философия от питонщика
Ссылка скрыта от гостей
Время первой программы:
не будем нарушать традиции и сделаем нашей первой программой "Hello world"
в текстовом редакторе/среде IDLE создайте новый документ и напишите:
print('Hello world')
после этого нажмите F5 согласитесь на сохранение ,так же можно сделать все это в интерпретаторе
Последнее редактирование: