Показаны сообщения с ярлыком Инструкции языка. Показать все сообщения
Показаны сообщения с ярлыком Инструкции языка. Показать все сообщения

17 апреля 2013 г.

Хронометраж в Python -e

С помощью хронометража в Python -e, мы научимся измерять время действия любой функции, или же другими словами проверить скорость ее работы, также относится к циклам и т.д. и т.п.

Так вот чтоб все это можно было сделать мы будем использовать модуль Time, который уже есть в инструкциях Python -a.

Для того чтоб все это работало мы создадим и сохраним на долго, утилиту timer.


# Файл mytimer.py

import time
reps = 1000
repslist = range(reps)

def timer(func, *pargs, **kargs):
    start = time.clock()
    for i in repslist:
        ret = func(*pargs, **kargs)
    elapsed = time.clock() - start
    return (elapsed, ret) 

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

  • Модуль time из стандартной библиотеки языка Python позволяет получить текущее  время  с  точностью,  зависящей  от  платформы.  В  Windows,  как утверждается, этот  модуль  позволяет получить  время  с точностью до  микросекунды и, следовательно, обеспечивает высокую точность. 
  • Вызов функции range был вынесен за пределы цикла измерения времени, благодаря чему время конструирования диапазона не накладывается на получаемые результаты в Python 2.6. В Python 3.0 функция range возвращает итератор, поэтому в версии 3.0 данный шаг можно считать излишним (хотя он и не мешает).
  • Счетчик reps  оформлен как глобальная переменная, благодаря чему  она 
может изменяться импортирующим модулем при необходимости: mytimer. 
reps = N.

Далее будет подробней...

3 ноября 2012 г.

nonlocal


Инструкция nonlocal

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

Пример правильного рабочего варианта:

def func():
    nonlocal name1, name2, ..

Данная инструкция существует только в версии Python 3.0.
-----------------------------------------------------------------

Инструкции  global  и nonlocal  несколько  ограничивают 
правила поиска:
  • global вынуждает интерпретатор начинать поиск имен с области объемлющего  модуля  и  позволяет  присваивать  переменным  новые  значения.  Область поиска простирается вплоть до встроенной области видимости, если искомое имя не будет найдено в модуле, при этом операция присваивания значений глобальным  именам всегда  будет  создавать  или изменять переменные в области видимости модуля.

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

18 октября 2012 г.

Генераторы списков


Генераторы списков, знакомство

Генераторы списков представляют  один из самых заметных инструментов, где используется протокол итераций. Генераторы списков, как это не странно, предназначены для удобной обработки списков, к которой можно отнести и создание новых списков, и модификацию существующих.
Использование генераторов списков  для работы с файлами:
У объекта файла имеется метод readlines, который загружает файл целиком в список строк
>>> f = open(‘script1.py’)
>>> lines = f.readlines()
>>> lines
[‘import sys\n’, ‘print(sys.path)\n’, ‘x = 2\n’, ‘print(2 ** 33)\n’]


Этот  фрагмент работает,  но все  строки в списке  оканчиваются символом новой строки (\n). 

17 октября 2012 г.

Понять итераторы


Итераторы, основы

Итераторы мы будем рассматривать на примере работы с файлами, как один из типов данных.
Например вызывая метод readline, мы перемещаемся к следующей строке:

>>> f = open(‘script1.py’) # Прочитать 4 строки из файла сценария 
>>> f.readline()           # Метод readline загружает одну строку
‘import sys\n’
>>> f.readline()
‘print(sys.path)\n’
>>> f.readline()
‘x = 2\n’
>>> f.readline()

‘print(2 ** 33)\n’
>>> f.readline()           # Вернет пустую строку по достижении конца файла
‘’
-----------------------------------------------------------------


Далее тот же самый пример, только используем функцию __next__().


По достижении конца файла метод __next__ возбуждает встроенное исключение
StopIteration вместо того, чтобы возвращать пустую строку:


>>> f = open(‘script1.py’) # Метод __next__ загружает одну строку
>>> f.__next__()# и возбуждает исключение по достижении конца
                # файла
‘import sys\n’
>>> f.__next__()
‘print(sys.path)\n’
>>> f.__next__()
‘x = 2\n’
>>> f.__next__()
‘print(2 ** 33)\n’
>>> f.__next__()
Traceback (most recent call last):
  ...текст сообщения об ошибке опущен...
StopIteration

Подобные объекты в языке Python считаются итерируемыми.
-----------------------------------------------------------------

15 октября 2012 г.

Циклы, углубляемся


Приемы программирования циклов

Цикл for - проще и быстрее чем цикл while, по крайней мере так оно выглядит. Но цикл for не всегда сможет сделать обход каких то элементов ( к примеру обход первого или же второго элемента в каком то типе данных). С такой задачей легко справляется цикл while. Но и для цикла for есть вспомогательные функции позволяющие управлять обходом элементов. 


  • Встроенная  функция range  возвращает  непрерывную  последовательность увеличивающихся  целых чисел, которые  можно использовать  в качестве индексов внутри цикла for


  • Встроенная  функция  zip  возвращает  список  кортежей,  составленных  из элементов входных списков с одинаковыми индексами, который может использоваться для одновременного обхода нескольких последовательностей в цикле for.

12 октября 2012 г.

Циклы



Циклы while и for

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


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

10 октября 2012 г.

Инструкция if, углубляемся



Условная инструкция if 
и синтаксические правила

Если говорить простым языком, в Python инструкция if выбирает, какое действие следует выполнить. Это основной инструмент выбора в Python, который отражает большую часть логики программы на языке Python. Кроме того, это наша первая  составная инструкция. Как и все составные инструкции языка Python, инструкция if может содержать другие инструкции, в том числе другие условные инструкции if.

Общая форма:

Синтаксически сначала записывается часть if с условным выражением, далее  могут  следовать одна  или более  необязательных  частей  elif  («else  if») с условными выражениями и, наконец, необязательная часть else.

8 октября 2012 г.

Выражение


Инструкции выражений

В качестве инструкций выражения используются
обычно в двух ситуациях:
 - Для вызова функций и методов
 - Для вывода значений в интерактивной оболочке


Наиболее часто используемые в языке Python инструкции 
выражений.

Операция   -    Интерпретация
spam(eggs, ham)   -    Вызов функции
spam.ham(eggs)     -    Вызов метода

spam                             -    Вывод значения переменной в интерактивной
                                             оболочке интерпретатора

print(a, b, c, sep=’’)          -   Операция ввода в Python 3.0
yield x ** 2                       -    Инструкция выражения yield


Инструкции выражений  и непосредственное изменение объектов:


>>> L = [1, 2]
>>> L.append(3)     # Метод append изменяет сам список
>>> L
[1, 2, 3]
-----------------------------------------------------------


>>> L = L.append(4)    # Но метод append возвращает значение None, а не L
>>> print L            # Поэтому мы теряем весь список!
None

Такая операция  дает  неверный результат  –  такие  методы списка, как apendsort и reverse, всегда выполняют непосредственное изменение объекта, но они не возвращают список, который был изменен с их помощью. В действительности они возвращают объект None.

-----------------------------------------------------------

Присваивание


Инструкции присваивания

Цель инструкции присваивания  записывается слева от знака равно, а объект, который присваивается, – справа. Цель слева может быть именем или компонентом объекта, а объектом справа может быть произвольное выражение, которое в результате дает объект. В большинстве случаев присваивание выполняется достаточно просто, однако оно обладает следующими особенностями, которые вам следует иметь в виду:
  • Инструкция  присваивания  создает  ссылку  на  объект.
  • Переменные создаются при первом присваивании.
  • Прежде чем переменную можно будет использовать, ей должно быть присвоено значение.
  • Некоторые инструкции неявно тоже выполняют операцию присваивания.

Инструкции языка Python



Инструкции

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

Структура программы на языке Python
Чтоб легче понять как работают инструкции рассмотрим следующую ступень иерархии:

1.  Программы делятся на модули.
2.  Модули содержат инструкции.
3.  Инструкции состоят из выражений.
4.  Выражения создают и обрабатывают объекты.