Неформальное введение в Python. Типы данных в Python. Скриптовый режим программирования

Синтаксис языка Python во многом похож на синтаксис таких языков, как Perl, C и Java, но вместе с этим имеет ряд отличий от этих языков программирования. В этой статье мы рассмотрим необходимые основы этого языка программирования .

Первая программа на Python:

Во-первых, следует отметить, что на Python вы можете программировать в двух режимах: интерактивном и скриптовом

Интерактивный режим программирования:

Без передачи в качестве аргумента названия файла запустит интерпретатор Python :

Введите следующий текст после строки приглашения Python и нажмите Enter:

>>> print "Hello, Python!"

Если вы все сделали правильно, то интерпретатор выдаст строку:

Если вы получили ошибку - удостоверьтесь, что правильно переписали код и что используете интерпретатор версии 2.х (для версии 3.х следует использовать команду print ("Hello, Python"))

Скриптовый режим программирования:

Запуск в командной строке python с названием файла (он еще называется скрипт) в качестве параметра, начнет выполнение кода, записанного в данном файле. После завершения выполнения скрипта, интерпретатор будет снова неактивен.

Давайте, создадим простую программу-скрипт на Python . Откройте любой текстовый редактор (Sublime, Notepad++, gedit...), создайте в нем файл с именем test и расширением.py (все файлы, содержащие код на Python должны иметь расширение .py ) и запишите в этот файл уже знакомый нам код и сохраните файл:

Print "Hello, Python!"

(Предполагается, что интерпретатор Python у вас задан в переменной PATH, то есть вы находясь в любой директории можете ввести python для запуска интерпретатора)

После этого введите следующую строку в командной строке и нажмите Enter:

Идентификаторы в Python:

Идентификаторы в Python это имена используемые для обозначения переменной, функции, класса, модуля или другого объекта. Идентификатор должен начинаться с буквы (от a до Z) или со знака подчеркивания (_), после которых может идти произвольное количество букв, знаков подчеркивания и чисел (от 0 до 9).

В Python недопустимо использование знаков препинания или специальных символов, таких как @, $ или % в качестве идентификаторов. Кроме того, Python чуствителен к регистру, то есть cat и Cat это два разных имени.

В Python существует следующая договоренность для названия идентификаторов:

  • Имена классов начинаются с большой буквы, все остальные идентификаторы - с маленькой.
  • Использования знака подчеркивания в качестве первого символа идентификатора означает, что данный идентификатор является частным (закрытым от использования вне класса).
  • Если идентификатор начинается и заканчивается двумя знаками подчеркивания (например, __init__) это означает, что он является специальным именем, определенным внутри языка.

Зарезервированые (ключевые) слова в Python:

В данной таблице собраны все ключевые слова Python .

and elif if print
as else import raise
assert except in return
break exec is try
class finally lambda while
continue for not which
def from or yield
del global pass

Эти зарезервированные слова нельзя использовать в качестве имени переменной или любого другого идентификатора. Все ключевые слова Python состоят только из букв в нижнем регистре. Получить список ключевых слов возможно в интерпретаторе командой

Help("keywords")

Строки и отступы:

Одна из первых особенностей Python , которая бросается в глаза программистам, начинающим изучать этот язык программирования, это то, что в нем не используются скобки для обозначения отдельных блоков кода. Вместо них в Python используются двоеточия и отступы.

Количество пробелов в отступах произвольно и выбирается каждым на свое усмотрение, однако по договоренности равняется четырем пробелам. При этом отступ всего блока должен быть одинаковым.

Например, этот блок кода будет работать (хотя так писать не стоит):

If True: print "Hi" else: print "Bye"

А этот уже вызовет ошибку:

If True: print "Hi" print "Bye"

Таким образом, в Python несколько строк кода с одинаковым отступом будут формировать отдельный блок кода. Благодаря такой системе значительно повышается читаемость кода и прививается привычка писать понятно и структурировано.

Многострочные выражения:

Выражения в Python , как правило, заканчиваются новой строкой. Однако, в этом языке программирования существует специальный символ переноса строки (\), показывающий, что с окончанием строки не заканчивается код. Например:

Total = item1 + \ item2 + \ item3

Выражения, которые находятся внутри скобок: квадратных (), фигурных ({ }) или круглых (()) не нуждаются в символе переноса строки. Например:

Days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]

Кавычки в Python:

В Python можно использовать одинарные ("), двойные (") и тройные (""" или """) кавычки чтобы обозначить строчный тип данных, при этом начинаться и заканчиваться строка должна одинаковыми кавычками. Строка занимающая несколько строк кода должна быть обрамлена тройными кавычками. Например:

Name = "wasd" description = "Some text" biography = """ Some long text for few lines of code """

В которой, в сжатой форме,
рассказывают об основах языка Python. Я предлагаю вам перевод этой статьи. Перевод не дословный. Я постарался подробнее объяснить некоторые моменты, которые могут быть непонятны.

Если вы собрались изучать язык Python, но не можете найти подходящего руководства, то эта
статья вам очень пригодится! За короткое время, вы сможете познакомиться с
основами языка Python. Хотя эта статья часто опирается
на то, что вы уже имеете опыт программирования, но, я надеюсь, даже новичкам
этот материал будет полезен. Внимательно прочитайте каждый параграф. В связи с
сжатостью материала, некоторые темы рассмотрены поверхностно, но содержат весь
необходимый метриал.

Основные свойства

Python не требует явного объявления переменных, является регистро-зависим (переменная var не эквивалентна переменной Var или VAR - это три разные переменные) объектно-ориентированным языком.

Синтаксис

Во первых стоит отметить интересную особенность Python. Он не содержит операторных скобок (begin..end в pascal или {..}в Си), вместо этого блоки выделяются отступами : пробелами или табуляцией, а вход в блок из операторов осуществляется двоеточием. Однострочные комментарии начинаются со знака фунта «#», многострочные - начинаются и заканчиваются тремя двойными кавычками «"""».
Чтобы присвоить значение пременной используется знак «=», а для сравнения -
«==». Для увеличения значения переменной, или добавления к строке используется оператор «+=», а для уменьшения - «-=». Все эти операции могут взаимодействовать с большинством типов, в том числе со строками. Например


>>> myvar = 3
>>> myvar += 2
>>> myvar -= 1
""«Это многострочный комментарий
Строки заключенные в три двойные кавычки игнорируются»""

>>> mystring = «Hello»
>>> mystring += " world."
>>> print mystring
Hello world.
# Следующая строка меняет
значения переменных местами. (Всего одна строка!)

>>> myvar, mystring = mystring, myvar

Структуры данных

Python содержит такие структуры данных как списки (lists), кортежи (tuples) и словари (dictionaries ). Списки - похожи на одномерные массивы (но вы можете использовать Список включающий списки - многомерный массив), кортежи - неизменяемые списки, словари - тоже списки, но индексы могут быть любого типа, а не только числовыми. "Массивы" в Python могут содержать данные любого типа, то есть в одном массиве может могут находиться числовые, строковые и другие типы данных. Массивы начинаются с индекса 0, а последний элемент можно получить по индексу -1 Вы можете присваивать переменным функции и использовать их соответственно.


>>> sample = , («a» , «tuple» )] #Список состоит из целого числа, другого списка и кортежа
>>> #Этот список содержит строку, целое и дробное число
>>> mylist = «List item 1 again» #Изменяем первый (нулевой) элемент листа mylist
>>> mylist[-1 ] = 3 .14 #Изменяем последний элемент листа
>>> mydict = {«Key 1» : «Value 1» , 2 : 3 , «pi» : 3 .14 } #Создаем словарь, с числовыми и целочисленным индексами
>>> mydict[«pi» ] = 3 .15 #Изменяем элемент словаря под индексом «pi».
>>> mytuple = (1 , 2 , 3 ) #Задаем кортеж
>>> myfunction = len #Python позволяет таким образом объявлять синонимы функции
>>> print myfunction(list )
3

Вы можете использовать часть массива, задавая первый и последний индекс через двоеточие «:». В таком случае вы получите часть массива, от первого индекса до второго не включительно. Если не указан первый элемент, то отсчет начинается с начала массива, а если не указан последний - то масив считывается до последнего элемента. Отрицательные значения определяют положение элемента с конца. Например:


>>> mylist = [«List item 1» , 2 , 3 .14 ]
>>> print mylist[:] #Считываются все элементы массива
["List item 1" , 2 , 3 .1400000000000001 ]
>>> print mylist #Считываются нулевой и первый элемент массива.
["List item 1" , 2 ]
>>> print mylist[-3 :-1 ] #Считываются элементы от нулевого (-3) до второго (-1) (не включительно)
["List item 1" , 2 ]
>>> print mylist #Считываются элементы от первого, до последнего

Строки

Строки в Python обособляются кавычками двойными «"» или одинарными «"» . Внутри двойных ковычек могут присутствовать одинарные или наоборот. К примеру строка «Он сказал "привет"!» будет выведена на экран как «Он сказал "привет"!». Если нужно использовать строку из несколько строчек, то эту строку надо начинать и заканчивать тремя двойными кавычками «"""». Вы можете подставить в шаблон строки элементы из кортежа или словаря. Знак процента «%» между строкой и кортежем, заменяет в строке символы «%s» на элемент кортежа. Словари позволяют вставлять в строку элемент под заданным индексом. Для этого надо использовать в строке конструкцию «%(индекс)s». В этом случае вместо «%(индекс)s» будет подставлено значение словаря под заданным индексом.


>>>print «Name: %s\nNumber: %s\nString: %s» % (myclass .name, 3 , 3 * "-" )
Name: Poromenos
Number: 3
String: -
strString = ""«Этот текст расположен
на нескольких строках»""

>>> print «This %(verb)s a %(noun)s.» % {«noun» : «test» , «verb» : «is» }
This is a test.

Операторы

Операторы while, if , for составляют операторы перемещения. Здесь нет аналога оператора select, так что придется обходиться if . В операторе for происходит сравнение переменной и списка . Чтобы получить список цифр до числа - используйте функцию range(). Вот пример использования операторов


rangelist = range (10 ) #Получаем список из десяти цифр (от 0 до 9)
>>> print rangelist
for number in rangelist: #Пока переменная number (которая каждый раз увеличивается на единицу) входит в список…
# Проверяем входит ли переменная
# numbers в кортеж чисел (3 , 4 , 7 , 9 )
if number in (3 , 4 , 7 , 9 ): #Если переменная number входит в кортеж (3, 4, 7, 9)...
# Операция «break » обеспечивает
# выход из цикла в любой момент
break
else :
# «continue » осуществляет «прокрутку»
# цикла. Здесь это не требуется, так как после этой операции
# в любом случае программа переходит опять к обработке цикла
continue
else :
# «else » указывать необязательно. Условие выполняется
# если цикл не был прерван при помощи «break ».
pass # Ничего не делать

if rangelist == 2 :
print «The second item (lists are 0-based) is 2»
elif rangelist == 3 :
print «The second item (lists are 0-based) is 3»
else :
print «Dunno»

while rangelist == 1 :
pass

Функции

Для объявления функции служит ключевое слово «def » . Аргументы функции задаются в скобках после названия функции. Можно задавать необязательные аргументы, присваивая им значение по умолчанию. Функции могут возвращать кортежи, в таком случае надо писать возвращаемые значения через запятую. Ключевое слово «lambda » служит для объявления элементарных функций.


# arg2 и arg3 - необязательые аргументы, принимают значение объявленное по умолчни,
# если не задать им другое значение при вызове функци.
def myfunction(arg1, arg2 = 100 , arg3 = «test» ):
return arg3, arg2, arg1
#Функция вызывается со значением первого аргумента - "Argument 1", второго - по умолчанию, и третьего - "Named argument" .
>>>ret1, ret2, ret3 = myfunction(«Argument 1» , arg3 = «Named argument» )
# ret1, ret2 и ret3 принимают значения "Named argument", 100, "Argument 1" соответственно
>>> print ret1, ret2, ret3
Named argument 100 Argument 1

# Следующая запись эквивалентна def f(x): return x + 1
functionvar = lambda x: x + 1
>>> print functionvar(1 )
2

Классы

Язык Python ограничен в множественном наследовании в классах. Внутренние переменные и внутренние методы классов начинаются с двух знаков нижнего подчеркивания «__» (например «__myprivatevar»). Мы можем также присвоить значение переменной класса извне. Пример:


class Myclass :
common = 10
def __init__(self ):
self .myvariable = 3
def myfunction(self , arg1, arg2):
return self .myvariable

# Здесь мы объявили класс Myclass . Функция __init__ вызывается автоматически при инициализации классов.
>>> classinstance = Myclass () # Мы инициализировали класс и переменная myvariable приобрела значение 3 как заявлено в методе инициализации
>>> #Метод myfunction класса Myclass возвращает значение переменной myvariable
3
# Переменная common объявлена во всех классах
>>> classinstance2 = Myclass ()
>>> classinstance.common
10
>>> classinstance2.common
10
# Поэтому, если мы изменим ее значение в классе Myclass изменятся
# и ее значения в объектах, инициализированных классом Myclass
>>> Myclass.common = 30
>>> classinstance.common
30
>>> classinstance2.common
30
# А здесь мы не изменяем переменную класса. Вместо этого
# мы объявляем оную в объекте и присваиваем ей новое значение
>>> classinstance.common = 10
>>> classinstance.common
10
>>> classinstance2.common
30
>>> Myclass.common = 50
# Теперь изменение переменной класса не коснется
# переменных объектов этого класса
>>> classinstance.common
10
>>> classinstance2.common
50

# Следующий класс является наследником класса Myclass
# наследуя его свойства и методы, ктому же класс может
# наследоваться из нескольких классов, в этом случае запись
# такая: class Otherclass(Myclass1, Myclass2, MyclassN)
class Otherclass(Myclass):
def __init__(self , arg1):
self .myvariable = 3
print arg1

>>> classinstance = Otherclass(«hello» )
hello
>>> classinstance.myfunction(1 , 2 )
3
# Этот класс не имеет совйтсва test, но мы можем
# объявить такую переменную для объекта. Причем
# tэта переменная будет членом только class instance.
>>> classinstance.test = 10
>>> classinstance.test
10

Исключения

Исключения в Python имеют структуру try -except [except ionname]:


def somefunction():
try :
# Деление на ноль вызывает ошибку
10 / 0
except ZeroDivisionError :
# Но программа не "Выполняет недопустимую операцию"
# А обрабатывает блок исключения соответствующий ошибке «ZeroDivisionError»
print «Oops, invalid.»

>>> fnexcept ()
Oops, invalid.

Импорт

Внешние библиотеки можно подключить процедурой «import », где - название подключаемой библиотеки. Вы так же можете использовать команду «from import », чтобы вы могли использовать функцию из библиотеки


import random #Импортируем библиотеку «random»
from time import clock #И заодно функцию «clock» из библиотеки «time»

Randomint = random .randint(1 , 100 )
>>> print randomint
64

Работа с файловой системой

Python имеет много встроенных библиотек. В этом примере мы попробуем сохранить в бинарном файле структуру списка, прочитать ее и сохраним строку в текстовом файле. Для преобразования структуры данных мы будем использовать стандартную библиотеку «pickle»


import pickle
mylist = [«This» , «is» , 4 , 13327 ]
# Откроем файл C:\binary.dat для записи. Символ «r»
# предотвращает замену специальных сиволов (таких как \n, \t, \b и др.).
myfile = file (r«C:\binary.dat» , «w» )
pickle .dump(mylist, myfile)
myfile.close()

Myfile = file (r«C:\text.txt» , «w» )
myfile.write(«This is a sample string» )
myfile.close()

Myfile = file (r«C:\text.txt» )
>>> print myfile.read()
"This is a sample string"
myfile.close()

# Открываем файл для чтения
myfile = file (r«C:\binary.dat» )
loadedlist = pickle .load(myfile)
myfile.close()
>>> print loadedlist
["This" , "is" , 4 , 13327 ]

Особенности

  • Условия могут комбинироваться. 1 < a < 3 выполняется тогда, когда а больше 1, но меньше 3.
  • Используйте операцию «del » чтобы очищать переменные или элементы массива .
  • Python предлагает большие возможности для работы со списками . Вы можете использовать операторы объявлении структуры списка. Оператор for позволяет задавать элементы списка в определенной последовательности, а if - позволяет выбирать элементы по условию.
>>> lst1 =
>>> lst2 =
>>> print
>>> print
# Оператор «any» возвращает true, если хотя
# бы одно из условий, входящих в него, выполняется.
>>> any(i % 3 for i in )
True
# Следующая процедура подсчитывает количество
# подходящих элементов в списке
>>> sum (1 for i in if i == 3 )
3
>>> del lst1
>>> print lst1
>>> del lst1
  • Глобальные переменные объявляются вне функций и могут быть прочитанны без каких либо объявлений. Но если вам необходимо изменить значение глобальной переменной из функции, то вам необходимо объявить ее в начале функции ключевым словом «global », если вы этого не сделаете, то Python объявит переменную, доступную только для этой функции.
number = 5

def myfunc():
# Выводит 5
print number

def anotherfunc():
# Это вызывает исключение, поскольку глобальная апеременная
# не была вызванна из функции. Python в этом случае создает
# одноименную переменную внутри этой функции и доступную
# только для операторов этой функции.
print number
number = 3

def yetanotherfunc():
global number
# И только из этой функции значение переменной изменяется.
number = 3

Эпилог

Разумеется в этой статье не описываются все возможности Python. Я надеюсь что эта статья поможет вам, если вы захотите и в дальнейшем изучать этот язык программирования.

Преимущества Python

  • Скорость выполнения программ написанных на Python очень высока. Это связанно с тем, что основные библиотеки Python
    написаны на C++ и выполнение задач занимает меньше времени, чем на других языках высокого уровня.
  • В связи с этим вы можете писать свои собственные модули для Python на C или C++
  • В стандартныx библиотеках Python вы можете найти средства для работы с электронной почтой, протоколами
    Интернета, FTP, HTTP, базами данных, и пр.
  • Скрипты, написанные при помощи Python выполняются на большинстве современных ОС. Такая переносимость обеспечивает Python применение в самых различных областях.
  • Python подходит для любых решений в области программирования, будь то офисные программы, вэб-приложения, GUI-приложения и т.д.
  • Над разработкой Python трудились тысячи энтузиастов со всего мира. Поддержкой современных технологий в стандартных библиотеках мы можем быть обязаны именно тому, что Python был открыт для всех желающих.

Теги:

  • Python
  • программирование
  • урок
Добавить метки

(Перевод)

На сайте Poromenos" Stuff была опубликована статья, в которой, в сжатой форме, рассказывают об основах языка Python. Я предлагаю вам перевод этой статьи. Перевод не дословный. Я постарался подробнее объяснить некоторые моменты, которые могут быть непонятны.

Если вы собрались изучать язык Python, но не можете найти подходящего руководства, то эта статья вам очень пригодится! За короткое время, вы сможете познакомиться с основами языка Python. Хотя эта статья часто опирается на то, что вы уже имеете опыт программирования, но, я надеюсь, даже новичкам этот материал будет полезен. Внимательно прочитайте каждый параграф. В связи с сжатостью материала, некоторые темы рассмотрены поверхностно, но содержат весь необходимый метриал.

Основные свойства

Python не требует явного объявления переменных, является регистро-зависим (переменная var не эквивалентна переменной Var или VAR - это три разные переменные) объектно-ориентированным языком.

Синтаксис

Во первых стоит отметить интересную особенность Python. Он не содержит операторных скобок (begin..end в pascal или {..}в Си), вместо этого блоки выделяются отступами : пробелами или табуляцией, а вход в блок из операторов осуществляется двоеточием. Однострочные комментарии начинаются со знака фунта «#», многострочные - начинаются и заканчиваются тремя двойными кавычками «"""».

Чтобы присвоить значение пременной используется знак «=», а для сравнения - «==». Для увеличения значения переменной, или добавления к строке используется оператор «+=», а для уменьшения - «-=». Все эти операции могут взаимодействовать с большинством типов, в том числе со строками. Например

>>> myvar = 3

>>> myvar += 2

>>> myvar -= 1

"""Это многострочный комментарий

Строки заключенные в три двойные кавычки игнорируются"""

>>> mystring = "Hello"

>>> mystring += " world."

>>> print mystring

Hello world.

# Следующая строка меняет

Значения переменных местами. (Всего одна строка!)

>>> myvar, mystring = mystring, myvar

Структуры данных

Python содержит такие структуры данных как списки (lists), кортежи (tuples) и словари (dictionaries ). Списки - похожи на одномерные массивы (но вы можете использовать Список включающий списки - многомерный массив), кортежи - неизменяемые списки, словари - тоже списки, но индексы могут быть любого типа, а не только числовыми. "Массивы" в Python могут содержать данные любого типа, то есть в одном массиве может могут находиться числовые, строковые и другие типы данных. Массивы начинаются с индекса 0, а последний элемент можно получить по индексу -1 Вы можете присваивать переменным функции и использовать их соответственно.

>>> sample = , ("a", "tuple")] #Список состоит из целого числа, другого списка и кортежа

>>> mylist = ["List item 1", 2, 3.14] #Этот список содержит строку, целое и дробное число

>>> mylist = "List item 1 again" #Изменяем первый (нулевой) элемент листа mylist

>>> mylist[-1] = 3.14 #Изменяем последний элемент листа

>>> mydict = {"Key 1": "Value 1", 2: 3, "pi": 3.14} #Создаем словарь, с числовыми и целочисленным индексами

>>> mydict["pi"] = 3.15 #Изменяем элемент словаря под индексом "pi".

>>> mytuple = (1, 2, 3) #Задаем кортеж

>>> myfunction = len #Python позволяет таким образом объявлять синонимы функции

>>> print myfunction(mylist)

Вы можете использовать часть массива, задавая первый и последний индекс через двоеточие «:». В таком случае вы получите часть массива, от первого индекса до второго не включительно. Если не указан первый элемент, то отсчет начинается с начала массива, а если не указан последний - то масив считывается до последнего элемента. Отрицательные значения определяют положение элемента с конца. Например:

>>> mylist = ["List item 1", 2, 3.14]

>>> print mylist[:] #Считываются все элементы массива

["List item 1", 2, 3.1400000000000001]

>>> print mylist #Считываются нулевой и первый элемент массива.

["List item 1", 2]

>>> print mylist[-3:-1] #Считываются элементы от нулевого (-3) до второго (-1) (не включительно)

["List item 1", 2]

>>> print mylist #Считываются элементы от первого, до последнего

Строки

Строки в Python обособляются кавычками двойными «"» или одинарными «"» . Внутри двойных ковычек могут присутствовать одинарные или наоборот. К примеру строка «Он сказал "привет"!» будет выведена на экран как «Он сказал "привет"!». Если нужно использовать строку из несколько строчек, то эту строку надо начинать и заканчивать тремя двойными кавычками «"""». Вы можете подставить в шаблон строки элементы из кортежа или словаря. Знак процента «%» между строкой и кортежем, заменяет в строке символы «%s» на элемент кортежа. Словари позволяют вставлять в строку элемент под заданным индексом. Для этого надо использовать в строке конструкцию «%(индекс)s». В этом случае вместо «%(индекс)s» будет подставлено значение словаря под заданным индексом.

>>>print "Name: %s\nNumber: %s\nString: %s" % (myclass.name, 3, 3 * "-")

Name: Poromenos

Number: 3

String: ---

strString = """Этот текст расположен

на нескольких строках"""

>>> print "This %(verb)s a %(noun)s." % {"noun": "test", "verb": "is"}

This is a test.

Операторы

Операторы while, if , for составляют операторы перемещения. Здесь нет аналога оператора select, так что придется обходиться if . В операторе for происходит сравнение переменной и списка . Чтобы получить список цифр до числа - используйте функцию range(). Вот пример использования операторов

rangelist = range(10) #Получаем список из десяти цифр (от 0 до 9)

>>> print rangelist

for number in rangelist: #Пока переменная number (которая каждый раз увеличивается на единицу) входит в список...

# Проверяем входит ли переменная

# numbers в кортеж чисел (3, 4, 7, 9)

If number in (3, 4, 7, 9): #Если переменная number входит в кортеж (3, 4, 7, 9)...

# Операция «break» обеспечивает

# выход из цикла в любой момент

Break

Else:

# «continue» осуществляет "прокрутку"

# цикла. Здесь это не требуется, так как после этой операции

# в любом случае программа переходит опять к обработке цикла

Continue

else:

# «else» указывать необязательно. Условие выполняется

# если цикл не был прерван при помощи «break».

Pass # Ничего не делать

if rangelist == 2:

Print "The second item (lists are 0-based) is 2"

elif rangelist == 3:

Print "The second item (lists are 0-based) is 3"

else:

Print "Dunno"

while rangelist == 1:

Pass

Функции

Для объявления функции служит ключевое слово «def» . Аргументы функции задаются в скобках после названия функции. Можно задавать необязательные аргументы, присваивая им значение по умолчанию. Функции могут возвращать кортежи, в таком случае надо писать возвращаемые значения через запятую. Ключевое слово «lambda » служит для объявления элементарных функций.

# arg2 и arg3 - необязательые аргументы, принимают значение объявленное по умолчни,

# если не задать им другое значение при вызове функци.

def myfunction(arg1, arg2 = 100, arg3 = "test"):

Return arg3, arg2, arg1

#Функция вызывается со значением первого аргумента - "Argument 1", второго - по умолчанию, и третьего - "Named argument".

>>>ret1, ret2, ret3 = myfunction("Argument 1", arg3 = "Named argument")

# ret1, ret2 и ret3 принимают значения "Named argument", 100, "Argument 1" соответственно

>>> print ret1, ret2, ret3

Named argument 100 Argument 1

# Следующая запись эквивалентна def f(x): return x + 1

functionvar = lambda x: x + 1

>>> print functionvar(1)

Классы

Язык Python ограничен в множественном наследовании в классах. Внутренние переменные и внутренние методы классов начинаются с двух знаков нижнего подчеркивания «__» (например «__myprivatevar»). Мы можем также присвоить значение переменной класса извне. Пример:

class Myclass:

Common = 10

Def __init__(self):

Self.myvariable = 3

Def myfunction(self, arg1, arg2):

Return self.myvariable

# Здесь мы объявили класс Myclass. Функция __init__ вызывается автоматически при инициализации классов.

>>> classinstance = Myclass() # Мы инициализировали класс и переменная myvariable приобрела значение 3 как заявлено в методе инициализации

>>> classinstance.myfunction(1, 2) #Метод myfunction класса Myclass возвращает значение переменной myvariable

# Переменная common объявлена во всех классах

>>> classinstance2 = Myclass()

>>> classinstance.common

>>> classinstance2.common

# Поэтому, если мы изменим ее значение в классе Myclass изменятся

# и ее значения в объектах, инициализированных классом Myclass

>>> Myclass.common = 30

>>> classinstance.common

>>> classinstance2.common

# А здесь мы не изменяем переменную класса. Вместо этого

# мы объявляем оную в объекте и присваиваем ей новое значение

>>> classinstance.common = 10

>>> classinstance.common

>>> classinstance2.common

>>> Myclass.common = 50

# Теперь изменение переменной класса не коснется

# переменных объектов этого класса

>>> classinstance.common

>>> classinstance2.common

# Следующий класс является наследником класса Myclass

# наследуя его свойства и методы, ктому же класс может

# наследоваться из нескольких классов, в этом случае запись

# такая: class Otherclass(Myclass1, Myclass2, MyclassN)

class Otherclass(Myclass):

Def __init__(self, arg1):

Self.myvariable = 3

Print arg1

>>> classinstance = Otherclass("hello")

hello

>>> classinstance.myfunction(1, 2)

# Этот класс не имеет совйтсва test, но мы можем

# объявить такую переменную для объекта. Причем

# tэта переменная будет членом только classinstance.

>>> classinstance.test = 10

>>> classinstance.test

Исключения

Исключения в Python имеют структуру try -except :

def somefunction():

Try:

# Деление на ноль вызывает ошибку

10 / 0

Except ZeroDivisionError:

# Но программа не "Выполняет недопустимую операцию"

# А обрабатывает блок исключения соответствующий ошибке «ZeroDivisionError»

Print "Oops, invalid."

>>> fnexcept()

Oops, invalid.

Импорт

Внешние библиотеки можно подключить процедурой «import », где - название подключаемой библиотеки. Вы так же можете использовать команду «from import », чтобы вы могли использовать функцию из библиотеки :

import random #Импортируем библиотеку «random»

from time import clock #И заодно функцию «clock» из библиотеки «time»

randomint = random.randint(1, 100)

>>> print randomint

Работа с файловой системой

Python имеет много встроенных библиотек. В этом примере мы попробуем сохранить в бинарном файле структуру списка, прочитать ее и сохраним строку в текстовом файле. Для преобразования структуры данных мы будем использовать стандартную библиотеку «pickle»:

import pickle

mylist = ["This", "is", 4, 13327]

# Откроем файл C:\binary.dat для записи. Символ «r»

# предотвращает замену специальных сиволов (таких как \n, \t, \b и др.).

myfile = file(r"C:\binary.dat", "w")

pickle.dump(mylist, myfile)

myfile.close()

myfile = file(r"C:\text.txt", "w")

myfile.write("This is a sample string")

myfile.close()

myfile = file(r"C:\text.txt")

>>> print myfile.read()

"This is a sample string"

myfile.close()

# Открываем файл для чтения

myfile = file(r"C:\binary.dat")

loadedlist = pickle.load(myfile)

myfile.close()

>>> print loadedlist

["This", "is", 4, 13327]

Особенности

  • Условия могут комбинироваться. 1 < a < 3 выполняется тогда, когда а больше 1, но меньше 3.
  • Используйте операцию «del » чтобы очищать переменные или элементы массива .
  • Python предлагает большие возможности для работы со списками . Вы можете использовать операторы объявлении структуры списка. Оператор for позволяет задавать элементы списка в определенной последовательности, а if - позволяет выбирать элементы по условию.

>>> lst1 =

>>> lst2 =

>>> print

>>> print

# Оператор «any» возвращает true, если хотя

# бы одно из условий, входящих в него, выполняется.

>>> any(i % 3 for i in )

True

# Следующая процедура подсчитывает количество

# подходящих элементов в списке

>>> sum(1 for i in if i == 3)

>>> del lst1

>>> print lst1

>>> del lst1

  • Глобальные переменные объявляются вне функций и могут быть прочитанны без каких либо объявлений. Но если вам необходимо изменить значение глобальной переменной из функции, то вам необходимо объявить ее в начале функции ключевым словом «global », если вы этого не сделаете, то Python объявит переменную, доступную только для этой функции.

number = 5

def myfunc():

# Выводит 5

Print number

def anotherfunc():

# Это вызывает исключение, поскольку глобальная апеременная

# не была вызванна из функции. Python в этом случае создает

# одноименную переменную внутри этой функции и доступную

# только для операторов этой функции.

Print number

Number = 3

def yetanotherfunc():

Global number

# И только из этой функции значение переменной изменяется.

Number = 3

Эпилог

Разумеется в этой статье не описываются все возможности Python. Я надеюсь что эта статья поможет вам, если вы захотите и в дальнейшем изучать этот язык программирования.

Преимущества Python

  • Скорость выполнения программ написанных на Python очень высока. Это связанно с тем, что основные библиотеки Python
    написаны на C++ и выполнение задач занимает меньше времени, чем на других языках высокого уровня.
  • В связи с этим вы можете писать свои собственные модули для Python на C или C++
  • В стандартныx библиотеках Python вы можете найти средства для работы с электронной почтой, протоколами
    Интернета, FTP, HTTP, базами данных, и пр.
  • Скрипты, написанные при помощи Python выполняются на большинстве современных ОС. Такая переносимость обеспечивает Python применение в самых различных областях.
  • Python подходит для любых решений в области программирования, будь то офисные программы, вэб-приложения, GUI-приложения и т.д.
  • Над разработкой Python трудились тысячи энтузиастов со всего мира. Поддержкой современных технологий в стандартных библиотеках мы можем быть обязаны именно тому, что Python был открыт для всех желающих.

Комментарии

Комментарии, противоречащие коду, хуже, чем отсутствие комментариев.

Всегда исправляйте комментарии, если меняете код!

Комментарии должны являться законченными предложениями. Если комментарий - фраза или предложение, первое слово должно быть написано с большой буквы, если только это не имя переменной, которая начинается с маленькой буквы (никогда не изменяйте регистр переменной!).

Если комментарий короткий, можно опустить точку в конце предложения. Блок комментариев обычно состоит из одного или более абзацев, составленных из полноценных предложений, поэтому каждое предложение должно оканчиваться точкой.

Ставьте два пробела после точки в конце предложения.

Программисты, которые не говорят на английском языке, пожалуйста, пишите комментарии на английском, если только Вы не уверены на 120%, что Ваш код никогда не будут читать люди, не знающие Вашего родного языка.

Блоки комментариев

Блок комментариев обычно объясняет код (весь, или только некоторую часть), идущий после блока, и должен иметь тот же отступ, что и сам код. Каждая строчка такого блока должна начинаться с символа # и одного пробела после него (если только сам текст комментария не имеет отступа).

Абзацы внутри блока комментариев разделяются строкой, состоящей из одного символа #.

«Встрочные» комментарии

Старайтесь реже использовать подобные комментарии.

Такой комментарий находится в той же строке, что и инструкция. «Встрочные» комментарии должны отделяться по крайней мере двумя пробелами от инструкции. Они должны начинаться с символа # и одного пробела.

Комментарии в строке с кодом не нужны и только отвлекают от чтения, если они объясняют очевидное. Не пишите вот так:

x = x + 1 # Increment x

Впрочем, такие комментарии иногда полезны:

x = x + 1 # Компенсация границы

Python Комментарии исключительно рациональны и имеют ряд особенностей:

Комментарии предназначены для вставки пояснений в текст программы, интерпретатор полностью их игнорирует.

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

СОВЕТ Помните — комментарии нужны программисту, а не интерпретатору Python. Вставка комментариев в код позволит через некоторое время быстро вспомнить предназначение фрагмента кода.

В языке Python присутствует только однострочный комментарий. Он начинается с символа #:

# Это комментарий

Однострочный комментарий может начинаться не только с начала строки, но и располагаться после инструкции.

Например, в следующем примере комментарий расположен после инструкции, предписывающей вывести надпись «Привет, мир!»:

рrint(«Привет, мир!») # Выводим надпись с помощью функции print()

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

# рrint(«Привет, мир!») Эта инструкция выполнена не будет

Если символ # расположен внутри кавычек или апострофов, то он не является символом комментария:

print(«# Это НЕ комментарий»)

Так как в языке Python нет многострочного комментария, то часто комментируемый фрагмент размещают внутри утроенных кавычек (или утроенных апострофов):

«»»
Эта инструкция выполнена не будет
рrint(«Привет, мир!»)
«»»

Следует заметить, что этот фрагмент кода не игнорируется интерпретатором, т. к. он не является комментарием. В результате выполнения фрагмента будет создан объект строкового типа.

Тем не менее инструкции внутри утроенных кавычек выполнены не будут, поскольку интерпретатор сочтет их простым текстом. Такие строки являются строками документирования , а не комментариями.

Строки документирования являются «топливом» для help ():

часто для комментирования большого фрагмента кода используются утроенные кавычки или утроенные апострофы. Такие строки не являются комментариями в полном смысле этого слова. Вместо комментирования фрагмента создаётся объект строкового типа, который сохраняется в атрибуте _doc_.

Функция help () при составлении документации получает информацию из этого атрибута. Такие строки называются строками документирования.

Приглашаю всех высказываться в

В которой, в сжатой форме,
рассказывают об основах языка Python. Я предлагаю вам перевод этой статьи. Перевод не дословный. Я постарался подробнее объяснить некоторые моменты, которые могут быть непонятны.

Если вы собрались изучать язык Python, но не можете найти подходящего руководства, то эта
статья вам очень пригодится! За короткое время, вы сможете познакомиться с
основами языка Python. Хотя эта статья часто опирается
на то, что вы уже имеете опыт программирования, но, я надеюсь, даже новичкам
этот материал будет полезен. Внимательно прочитайте каждый параграф. В связи с
сжатостью материала, некоторые темы рассмотрены поверхностно, но содержат весь
необходимый метриал.

Основные свойства

Python не требует явного объявления переменных, является регистро-зависим (переменная var не эквивалентна переменной Var или VAR - это три разные переменные) объектно-ориентированным языком.

Синтаксис

Во первых стоит отметить интересную особенность Python. Он не содержит операторных скобок (begin..end в pascal или {..}в Си), вместо этого блоки выделяются отступами : пробелами или табуляцией, а вход в блок из операторов осуществляется двоеточием. Однострочные комментарии начинаются со знака фунта «#», многострочные - начинаются и заканчиваются тремя двойными кавычками «"""».
Чтобы присвоить значение пременной используется знак «=», а для сравнения -
«==». Для увеличения значения переменной, или добавления к строке используется оператор «+=», а для уменьшения - «-=». Все эти операции могут взаимодействовать с большинством типов, в том числе со строками. Например


>>> myvar = 3
>>> myvar += 2
>>> myvar -= 1
""«Это многострочный комментарий
Строки заключенные в три двойные кавычки игнорируются»""

>>> mystring = «Hello»
>>> mystring += " world."
>>> print mystring
Hello world.
# Следующая строка меняет
значения переменных местами. (Всего одна строка!)

>>> myvar, mystring = mystring, myvar

Структуры данных

Python содержит такие структуры данных как списки (lists), кортежи (tuples) и словари (dictionaries ). Списки - похожи на одномерные массивы (но вы можете использовать Список включающий списки - многомерный массив), кортежи - неизменяемые списки, словари - тоже списки, но индексы могут быть любого типа, а не только числовыми. "Массивы" в Python могут содержать данные любого типа, то есть в одном массиве может могут находиться числовые, строковые и другие типы данных. Массивы начинаются с индекса 0, а последний элемент можно получить по индексу -1 Вы можете присваивать переменным функции и использовать их соответственно.


>>> sample = , («a» , «tuple» )] #Список состоит из целого числа, другого списка и кортежа
>>> #Этот список содержит строку, целое и дробное число
>>> mylist = «List item 1 again» #Изменяем первый (нулевой) элемент листа mylist
>>> mylist[-1 ] = 3 .14 #Изменяем последний элемент листа
>>> mydict = {«Key 1» : «Value 1» , 2 : 3 , «pi» : 3 .14 } #Создаем словарь, с числовыми и целочисленным индексами
>>> mydict[«pi» ] = 3 .15 #Изменяем элемент словаря под индексом «pi».
>>> mytuple = (1 , 2 , 3 ) #Задаем кортеж
>>> myfunction = len #Python позволяет таким образом объявлять синонимы функции
>>> print myfunction(list )
3

Вы можете использовать часть массива, задавая первый и последний индекс через двоеточие «:». В таком случае вы получите часть массива, от первого индекса до второго не включительно. Если не указан первый элемент, то отсчет начинается с начала массива, а если не указан последний - то масив считывается до последнего элемента. Отрицательные значения определяют положение элемента с конца. Например:


>>> mylist = [«List item 1» , 2 , 3 .14 ]
>>> print mylist[:] #Считываются все элементы массива
["List item 1" , 2 , 3 .1400000000000001 ]
>>> print mylist #Считываются нулевой и первый элемент массива.
["List item 1" , 2 ]
>>> print mylist[-3 :-1 ] #Считываются элементы от нулевого (-3) до второго (-1) (не включительно)
["List item 1" , 2 ]
>>> print mylist #Считываются элементы от первого, до последнего

Строки

Строки в Python обособляются кавычками двойными «"» или одинарными «"» . Внутри двойных ковычек могут присутствовать одинарные или наоборот. К примеру строка «Он сказал "привет"!» будет выведена на экран как «Он сказал "привет"!». Если нужно использовать строку из несколько строчек, то эту строку надо начинать и заканчивать тремя двойными кавычками «"""». Вы можете подставить в шаблон строки элементы из кортежа или словаря. Знак процента «%» между строкой и кортежем, заменяет в строке символы «%s» на элемент кортежа. Словари позволяют вставлять в строку элемент под заданным индексом. Для этого надо использовать в строке конструкцию «%(индекс)s». В этом случае вместо «%(индекс)s» будет подставлено значение словаря под заданным индексом.


>>>print «Name: %s\nNumber: %s\nString: %s» % (myclass .name, 3 , 3 * "-" )
Name: Poromenos
Number: 3
String: -
strString = ""«Этот текст расположен
на нескольких строках»""

>>> print «This %(verb)s a %(noun)s.» % {«noun» : «test» , «verb» : «is» }
This is a test.

Операторы

Операторы while, if , for составляют операторы перемещения. Здесь нет аналога оператора select, так что придется обходиться if . В операторе for происходит сравнение переменной и списка . Чтобы получить список цифр до числа - используйте функцию range(). Вот пример использования операторов


rangelist = range (10 ) #Получаем список из десяти цифр (от 0 до 9)
>>> print rangelist
for number in rangelist: #Пока переменная number (которая каждый раз увеличивается на единицу) входит в список…
# Проверяем входит ли переменная
# numbers в кортеж чисел (3 , 4 , 7 , 9 )
if number in (3 , 4 , 7 , 9 ): #Если переменная number входит в кортеж (3, 4, 7, 9)...
# Операция «break » обеспечивает
# выход из цикла в любой момент
break
else :
# «continue » осуществляет «прокрутку»
# цикла. Здесь это не требуется, так как после этой операции
# в любом случае программа переходит опять к обработке цикла
continue
else :
# «else » указывать необязательно. Условие выполняется
# если цикл не был прерван при помощи «break ».
pass # Ничего не делать

if rangelist == 2 :
print «The second item (lists are 0-based) is 2»
elif rangelist == 3 :
print «The second item (lists are 0-based) is 3»
else :
print «Dunno»

while rangelist == 1 :
pass

Функции

Для объявления функции служит ключевое слово «def » . Аргументы функции задаются в скобках после названия функции. Можно задавать необязательные аргументы, присваивая им значение по умолчанию. Функции могут возвращать кортежи, в таком случае надо писать возвращаемые значения через запятую. Ключевое слово «lambda » служит для объявления элементарных функций.


# arg2 и arg3 - необязательые аргументы, принимают значение объявленное по умолчни,
# если не задать им другое значение при вызове функци.
def myfunction(arg1, arg2 = 100 , arg3 = «test» ):
return arg3, arg2, arg1
#Функция вызывается со значением первого аргумента - "Argument 1", второго - по умолчанию, и третьего - "Named argument" .
>>>ret1, ret2, ret3 = myfunction(«Argument 1» , arg3 = «Named argument» )
# ret1, ret2 и ret3 принимают значения "Named argument", 100, "Argument 1" соответственно
>>> print ret1, ret2, ret3
Named argument 100 Argument 1

# Следующая запись эквивалентна def f(x): return x + 1
functionvar = lambda x: x + 1
>>> print functionvar(1 )
2

Классы

Язык Python ограничен в множественном наследовании в классах. Внутренние переменные и внутренние методы классов начинаются с двух знаков нижнего подчеркивания «__» (например «__myprivatevar»). Мы можем также присвоить значение переменной класса извне. Пример:


class Myclass :
common = 10
def __init__(self ):
self .myvariable = 3
def myfunction(self , arg1, arg2):
return self .myvariable

# Здесь мы объявили класс Myclass . Функция __init__ вызывается автоматически при инициализации классов.
>>> classinstance = Myclass () # Мы инициализировали класс и переменная myvariable приобрела значение 3 как заявлено в методе инициализации
>>> #Метод myfunction класса Myclass возвращает значение переменной myvariable
3
# Переменная common объявлена во всех классах
>>> classinstance2 = Myclass ()
>>> classinstance.common
10
>>> classinstance2.common
10
# Поэтому, если мы изменим ее значение в классе Myclass изменятся
# и ее значения в объектах, инициализированных классом Myclass
>>> Myclass.common = 30
>>> classinstance.common
30
>>> classinstance2.common
30
# А здесь мы не изменяем переменную класса. Вместо этого
# мы объявляем оную в объекте и присваиваем ей новое значение
>>> classinstance.common = 10
>>> classinstance.common
10
>>> classinstance2.common
30
>>> Myclass.common = 50
# Теперь изменение переменной класса не коснется
# переменных объектов этого класса
>>> classinstance.common
10
>>> classinstance2.common
50

# Следующий класс является наследником класса Myclass
# наследуя его свойства и методы, ктому же класс может
# наследоваться из нескольких классов, в этом случае запись
# такая: class Otherclass(Myclass1, Myclass2, MyclassN)
class Otherclass(Myclass):
def __init__(self , arg1):
self .myvariable = 3
print arg1

>>> classinstance = Otherclass(«hello» )
hello
>>> classinstance.myfunction(1 , 2 )
3
# Этот класс не имеет совйтсва test, но мы можем
# объявить такую переменную для объекта. Причем
# tэта переменная будет членом только class instance.
>>> classinstance.test = 10
>>> classinstance.test
10

Исключения

Исключения в Python имеют структуру try -except [except ionname]:


def somefunction():
try :
# Деление на ноль вызывает ошибку
10 / 0
except ZeroDivisionError :
# Но программа не "Выполняет недопустимую операцию"
# А обрабатывает блок исключения соответствующий ошибке «ZeroDivisionError»
print «Oops, invalid.»

>>> fnexcept ()
Oops, invalid.

Импорт

Внешние библиотеки можно подключить процедурой «import », где - название подключаемой библиотеки. Вы так же можете использовать команду «from import », чтобы вы могли использовать функцию из библиотеки


import random #Импортируем библиотеку «random»
from time import clock #И заодно функцию «clock» из библиотеки «time»

Randomint = random .randint(1 , 100 )
>>> print randomint
64

Работа с файловой системой

Python имеет много встроенных библиотек. В этом примере мы попробуем сохранить в бинарном файле структуру списка, прочитать ее и сохраним строку в текстовом файле. Для преобразования структуры данных мы будем использовать стандартную библиотеку «pickle»


import pickle
mylist = [«This» , «is» , 4 , 13327 ]
# Откроем файл C:\binary.dat для записи. Символ «r»
# предотвращает замену специальных сиволов (таких как \n, \t, \b и др.).
myfile = file (r«C:\binary.dat» , «w» )
pickle .dump(mylist, myfile)
myfile.close()

Myfile = file (r«C:\text.txt» , «w» )
myfile.write(«This is a sample string» )
myfile.close()

Myfile = file (r«C:\text.txt» )
>>> print myfile.read()
"This is a sample string"
myfile.close()

# Открываем файл для чтения
myfile = file (r«C:\binary.dat» )
loadedlist = pickle .load(myfile)
myfile.close()
>>> print loadedlist
["This" , "is" , 4 , 13327 ]

Особенности

  • Условия могут комбинироваться. 1 < a < 3 выполняется тогда, когда а больше 1, но меньше 3.
  • Используйте операцию «del » чтобы очищать переменные или элементы массива .
  • Python предлагает большие возможности для работы со списками . Вы можете использовать операторы объявлении структуры списка. Оператор for позволяет задавать элементы списка в определенной последовательности, а if - позволяет выбирать элементы по условию.
>>> lst1 =
>>> lst2 =
>>> print
>>> print
# Оператор «any» возвращает true, если хотя
# бы одно из условий, входящих в него, выполняется.
>>> any(i % 3 for i in )
True
# Следующая процедура подсчитывает количество
# подходящих элементов в списке
>>> sum (1 for i in if i == 3 )
3
>>> del lst1
>>> print lst1
>>> del lst1
  • Глобальные переменные объявляются вне функций и могут быть прочитанны без каких либо объявлений. Но если вам необходимо изменить значение глобальной переменной из функции, то вам необходимо объявить ее в начале функции ключевым словом «global », если вы этого не сделаете, то Python объявит переменную, доступную только для этой функции.
number = 5

def myfunc():
# Выводит 5
print number

def anotherfunc():
# Это вызывает исключение, поскольку глобальная апеременная
# не была вызванна из функции. Python в этом случае создает
# одноименную переменную внутри этой функции и доступную
# только для операторов этой функции.
print number
number = 3

def yetanotherfunc():
global number
# И только из этой функции значение переменной изменяется.
number = 3

Эпилог

Разумеется в этой статье не описываются все возможности Python. Я надеюсь что эта статья поможет вам, если вы захотите и в дальнейшем изучать этот язык программирования.

Преимущества Python

  • Скорость выполнения программ написанных на Python очень высока. Это связанно с тем, что основные библиотеки Python
    написаны на C++ и выполнение задач занимает меньше времени, чем на других языках высокого уровня.
  • В связи с этим вы можете писать свои собственные модули для Python на C или C++
  • В стандартныx библиотеках Python вы можете найти средства для работы с электронной почтой, протоколами
    Интернета, FTP, HTTP, базами данных, и пр.
  • Скрипты, написанные при помощи Python выполняются на большинстве современных ОС. Такая переносимость обеспечивает Python применение в самых различных областях.
  • Python подходит для любых решений в области программирования, будь то офисные программы, вэб-приложения, GUI-приложения и т.д.
  • Над разработкой Python трудились тысячи энтузиастов со всего мира. Поддержкой современных технологий в стандартных библиотеках мы можем быть обязаны именно тому, что Python был открыт для всех желающих.

Теги: Добавить метки