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

3 ноября 2012 г.

nonlocal


Инструкция nonlocal

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

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

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

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

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

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

1 ноября 2012 г.

Области видимости, углубляемся

Сохранение состояния объемлющей области видимости 
с помощью аргументов по умолчанию:
Из-за отсутствия вложенных областей видимости в инструкциях def в более ранних версиях Python, программный код мог бы терпеть неудачу.
Чтобы разрешить ситуацию, программисты обычно использовали аргументы со значениями по умолчанию для передачи (сохранения) объектов, расположенных в объемлющей области видимости:
def f1():
    x = 88
    def f2(x=x):       # Сохраняет значение переменной x в объемлющей области 
        print(x)       # в виде аргумента
    f2()

f1()                   # Выведет 88
Этот  фрагмент  будет  работать  во  всех  версиях  Python.
-----------------------------------------------------------------

Python, области видимости


Области видимости и
вложенные функции

С появлением вложенных функций в области видимости поиск стал сложнее.

Внутри функции:
  • При обращении к переменной (X) поиск имени X сначала производится в локальной области видимости (функции)затем в локальных областях видимости всех
лексически-объемлющих функций, изнутри наружу, затем в текущей глобальной области видимости (в модуле) и, наконец, во встроенной области видимости (модуль builtins). Поиск имен, объявленных в инструкции global, начинается сразу с глобальной (в модуле) области видимости.

  • Операция присваивания (X = value) по умолчанию создает или изменяет имя
X в текущей локальной области видимости. Если имя X объявлено глобальным внутри функции, операция присваивания создает или изменяет имя X в области видимости объемлющего модуля. Если имя X объявлено нелокальным внутри функции, операция присваивания создает или изменяет имя X в ближайшей области видимости объемлющей функции.

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

29 октября 2012 г.

Области видимости


Области видимости

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

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

  • Имена, определяемые внутри инструкции def, видны только программному коду внутри инструкции def. К этим именам нельзя обратиться за пределами функции.

  • Имена,  определяемые  внутри  инструкции  def,  не  вступают  в  конфликт с именами, находящимися за пределами инструкции def, даже если и там и там присутствуют одинаковые имена. Имя X, которому присвоено значение за пределами данной инструкции def (например, в другой инструкции def или на верхнем уровне модуля), полностью отлично от имени X, которому присвоено значение внутри инструкции def.

28 октября 2012 г.

Что то нужное в Python


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

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

Полиморфизм в языке Python:
Полиморфизм – термин,который означает, что смысл операции зависит от типов обрабатываемых объектов. Поскольку Python – это язык с динамической типизацией, полиморфизм в нем проявляется повсюду. Это как бы одна из расшифровок полиморфизма...

Пример, где мы возьмем функцию, и превратим ее в универсальную утилиту нахождения пересечения:
def intersect(seq1, seq2):
    res = []                   # Изначально пустой результат
    for x in seq1:             # Обход последовательности seq1
        if x in seq2:          # Общий элемент?
            res.append(x)      # Добавить в конец
    return res

Вызов:

>>> s1 = “SPAM”
>>> s2 = “SCAM”
>>> intersect(s1, s2)  # Строки
[‘S’, ‘A’, ‘M’]


В данном примере мы передали функции две строки и получили список общих символов. Переменная res внутри функции intersect – это то, что в языке Python называется локальной переменной,  –  имя,  которое доступно только  программному код у внутри инструкции def и существует только во время  выполнения функции.


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


В языке Python, наша функция intersect(которая описывается выше)также является полиморфной. То есть она может обрабатывать объекты произвольных типов, при условии, что они поддерживают ожидаемый интерфейс:

>>> x = intersect([1, 2, 3], (1, 4))   # Смешивание типов
>>> x                                  # Объект с результатом
[1]


На этот раз  функции  были переданы объекты разных типов  – список и кортеж, – и это не помешало ей отыскать общие элементы.
----------------------------------------------------------------- 

24 октября 2012 г.

Функции


Функции, основы

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

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

Инструкции и выражения, имеющие отношение к функциям:
Инструкция Примеры
Вызов - myfunc(‘spam’, ‘eggs’, meat=ham)

def, return - def adder(a, b=1, *c):
                  return a+b+c[0]


global  - def changer():
              global x; x = ‘new’


nonlocal - def changer():
               nonlocal x; x = ‘new’


yield - def squares(x):
            for i in range(x): yield i ** 2

lambda - funcs = [lambda x: x**2, lambda x: x*3]

15 октября 2012 г.

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


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

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


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


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

8 октября 2012 г.

Другие инструменты для работы с файлами



Другие инструменты для работы с файлами

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

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

Стандартные потоки ввода-вывода
Объекты уже открытых файлов в модуле sys, такие как sys.stdout.

Дескрипторы файлов в модуле os
Целочисленные дескрипторы файлов, обеспечивающие поддержку низко-
уровневых операций, таких как блокировка файлов.

Сокеты, каналы и очереди (FIFO)
Объекты, по своим характеристикам напоминающие файлы, используемые 
для синхронизации процессов или организации взаимодействий по сети. 

Файлы с доступом по ключу, известные как «хранилища» («shelves»)
Используются для хранения объектов языка Python по ключу. 

Потоки командной оболочки
Такие инструменты, как os.popen и subprocess.Popen, которые поддерживаеют возможность запуска дочерних процессов и выполнения операций с их стандартными потоками ввода-вывода.

Файлы, углубляемся


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

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

28 сентября 2012 г.

Кортежи, углубляемся

Кортежи

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


Кортежи:
Это упорядоченные коллекции объектов произвольных типов;
Обеспечивают доступ к элементам по смещению;
Относятся к категории неизменяемых последовательностей;

16 сентября 2012 г.

Словари, углубляемся

В данном уроке более подробно будет описано про словари и про методы для работы со словарями.

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


9 сентября 2012 г.

Cписки, углубляемся

Списки в действии:

Операция - Интерпретация
L = []  - Пустой список
L = [0, 1, 2, 3]  - Четыре элемента с индексами 0..3
L = [‘abc’, [‘def’, ghi’]]  - Вложенные списки
L = list(‘spam’) - Создание списка из итерируемого объекта.
L = list(range(-4, 4)) - Создание списка из непрерывной последовательности   целых чисел


6 сентября 2012 г.

Строки, углубляемся

Строки - упорядоченные последовательности символов а так же, встроенный объект в языке Python.

В данном уроке углубимся в их изучении.

5 сентября 2012 г.

Динамическая типизация

Динамическая типизация и полиморфизм - основа гибкости языка.

>>> a = 3

1.  Создается объект, представляющий число 3.
2.  Создается переменная a, если она еще отсутствует.
3.  В переменную a записывается ссылка на вновь созданный объект, представ-
ляющий число 3.

4 сентября 2012 г.

Все что можно делать с числами

Совсем недавно, был наглядно рассмотрен такой тип данных как числа. В данном посте мы рассмотрим как можно болше возможностей работы с числами. Смотрим ниже:

К примеру создадим переменные которые содержат в себе число:
>>>a=3
>>>b=4
Далее будем производить над ними какието действия:

Файлы

Файлы - интерфейс между кодом на языке Python и внешними файлами на компе.
Вообщем в этом уроке будет меньше теории, больше кода.

>>> f=open("myfile.txt",'w') # открываем файл на запись с помощью функции open

>>> f.write('Hello World\n') # запись в файл
6                            # Возвращает количество байт.
>>>f.close() # закрываем файл и выталкиваем буфер на диск
>>> f=open("myfile.txt") # открываем файл на чтение
>>> text=f.read() # в переменную text заносим данные из файла
>>>text'Hello World\n'
>>>print(text)
Hello World

3 сентября 2012 г.

Кортежи, вводный обзор


Кортежи, основы

>>>T=(1,"2",3,4)
Кортеж(tuple - "тьюпл",или же "тьюпэл").
Кортежи напоминают чем то список. Но отличие в том, что обьект который хранится в кортеже нельзя изменить. Поэтому чтоб внести какието изменения в кортежи, часто используют создание нового кортежа, который будет обьеденять старый кортеж и новый элемент. Подробности будут ниже...

1 сентября 2012 г.

Словари

>>> D= {'food': 'Spam', 'quantity': 4, 'color': 'pink'} 
Словари- такой тип данных,  в котором обращение к объекту возможно с помощью ключа.
Вообщем чего то мне лень сейчас все подробно это расписывать, думаю главное вам будет, это как инициализируется, создается словарь и как получать из него нужные объекты.
В качестве примера рассмотрим следующий словарь, состоящий из трех элементов (с ключами «food» (продукт питания), «quantity» (количество) и «color» (цвет)):

31 августа 2012 г.

Списки, основа


Списки 
В данном посте будет коротко описаны основы списков.

Список=["первый объект","второй объект",3,4,"5й объект"]
>>>Список
['первый объект','второй объект',3,4,'5й объект']


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

30 августа 2012 г.

Данные в языке Python

   Данные в языке Python представлены в форме объектов.
Программы на языке Python можно разложить на такие составляющие, как модули, инструкции, выражения и объекты, при этом:

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