Python 2.7 . 12 (default, Nov 19 2016 , 06:48:10 ) — КиберПедия 

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Python 2.7 . 12 (default, Nov 19 2016 , 06:48:10 )

2020-05-07 150
Python 2.7 . 12 (default, Nov 19 2016 , 06:48:10 ) 0.00 из 5.00 0 оценок
Заказать работу

[ GCC 5.4. 0 20160609 ] on linux2

Type "help", "copyright", "credits" or "license" for

More information.

>> > exit()

echou @pythonicNeteng:~$ python3

Python 3.5. 2 (default, Nov 17 2016, 17:05:23)

[ GCC 5.4. 0 20160609 ] on linux

Type "help", "copyright", "credits" or "license" for

More information.

>> > exit()

  

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

Если некоторые особые библиотеки не поддерживают Python 3, например, Ansible (они активно работают над переносом на Python 3), это будет указываться с тем чтобы вы могли вместо него применять Python 2.

Операционная система

Как уже упоминалось, Python является кросс платформенным. Программы Python могут исполняться в Windows, Mac, и Linux. { Прим. пер.: а также FreeBSD и массе прочих ОС } На практике необходимо придерживаться некоторых предосторожностей когда вам необходимо гарантировать кроссплатформенную совместимость, например, принять меры предосторожности о хитростях с обратными слешами в именах файлов Windows { Прим. пер.: подробнее см. Исправление имён файлов Unix/Linux/POSIX }. Поскольку данная книга предназначена для DevOps, системных и сетевых инженеров, Linux является предпочитаемой платформой для целевой аудитории, особенно для промышленных применений. Весь код данной книги был проверен на машине с Linux Ubuntu 16.06 LTS. Я также приложил все свои усилия чтобы убедиться, что данный код работает также на платформе Windows и Mac.

Если вас интересуют подробности применяемой ОС, они таковы:

echou @pythonicNeteng:~$ uname -a

Linux pythonicNeteng 4.4. 0 - 31 -generic #50-Ubuntu SMP

Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64

GNU / Linux

echou @pythonicNeteng:~$

  

Исполнение программ Python

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

Одним из способов, которым вы можете применять Python состоит в получении преимуществ от имеющегося интерактивного приглашения. Это полезно когда вы желаете быстро проверить некую порцию кода или концепцию Python без написания программы целиком. Это обычно выполняется простым набором с клавиатуры Python:

Python 3.5. 2 (default, Nov 17 2016, 17:05:23)

[ GCC 5.4. 0 20160609 ] on linux

Type "help", "copyright", "credits" or "license" for

More information.

>> > print("hello world")

Hello world

>> >

  

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

Наиболее распространённым способом исполнения программ, однако, является их сохранение в вашем файле Python и последующем исполнении их в интерпретаторе. Это убережёт вас от набора одних и тех же операторов снова и снова, так как вы это делаете в интерактивной оболочке. Файлы Python являются всего лишь обычными текстовыми файлами, которые обычно сохраняются с расширением.py. В мире *nix вы также можете добавить поверх строку shebang #!) для определения того интерпретатора, который вы используете для выполнения данного файла. Символ # может применяться для определения комментариев, которые не будут исполняться вашим интерпретатором. Приводимый ниже файл helloworld.py имеет такие операторы:

 

# This is a comment

print("hello world")

     

Он может быть исполнен следующим образом:

echou @pythonicNeteng:~/Master_Python_Networking/

Chapter1$ python helloworld.py

Hello world

echou @pythonicNeteng:~/Master_Python_Networking/

Chapter1$

  

Встроенные типы Python

Python имеет некоторые стандартные типы, встроенные в сам интерпретатор:

  • None: Это объект Null
  • Численный: int, long, float, complex и bool (это подкласс int со значениями True или False)
  • Последовательности: str (строка), list (список), tuple (кортеж) и range (диапазон)
  • Соответствие: dict
  • Множества: set и frozenset

Тип None

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

Числа

Численные объекты Python в основном являются собственно числами. За исключением Булева, все числовые типы int, long, float и complex имеют знак, что означает, что они могут быть положительными и отрицательными. Булевский тип (логический) является подклассом значений целого, который может иметь только два значения: 1 для True и 0 для False. Остальные числовые типы различаются только тем насколько точно они могут представлять данное число; например, int это целые числа с ограниченным диапазоном, а long - с неограниченным. float - это числа, применяющие представление с двойной точностью (64- бита) на данной машине. { Прим. пер.: представление может различаться для разных процессоров, что может стать источником очень трудно обнаруживаемых ошибок при переносе кодов с платформы на платформу. Помните об этом! }

Последовательности

Последовательности являются упорядоченными наборами объектов с неким индексом из неотрицательных целых. В этом и нескольких последующих разделах мы будем применять свой интерактивный интерпретатор для иллюстрации различных типов. Не стесняйтесь набирать то же самое на своём собственном компьютере.

Порой это может оказаться сюрпризом для людей, что string на самом деле некий тип последовательности. Однако если вы взглянете пристальней, строки это последовательности помещённых вместе символов. Строки заключаются в одиночные, двойные или тройные кавычки. В последующем примере отметим ту строку, которая слишком длинна и тройные кавычки позволяют нам расширить такую строку на несколько строчек:

>>> a = "networking is fun"

>>> b = 'DevOps is fun too'

>>> c = """what about coding?

... super fun!"""

>>>

  

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

>> > vendors = [ "Cisco", "Arista", "Juniper" ]

>> > vendors[ 0 ]

'Cisco'

>> > vendors[ 1 ]

'Arista'

>> > vendors[ 2 ]

'Juniper'

  

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

>> > datacenters = ("SJC1", "LAX1", "SFO1")

>> > datacenters[ 0 ]

'SJC1'

>> > datacenters[ 1 ]

'LAX1'

>> > datacenters[ 2 ]

'SFO1'

  

Некоторые операции являются общими для всех типов последовательностей, например, возвращение некоторого элемента по значению его индекса, а также расслоение:

>> > a

'networking is fun'

>> > a[ 1 ]

'e'

>> > vendors

[ 'Cisco', 'Arista', 'Juniper' ]

>> > vendors[ 1 ]

'Arista'

>> > datacenters

('SJC1', 'LAX1', 'SFO1')

>> > datacenters[ 1 ]

'LAX1'

>> >

>>> a[ 0:2 ]

'ne'

>> > vendors[ 0:2 ]

[ 'Cisco', 'Arista' ]

>> > datacenters[ 0:2 ]

('SJC1', 'LAX1')

>> >

  

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

>> > len(a)

17

>> > len(vendors)

3

>> > len(datacenters)

3

>> >

>>> b = [ 1, 2, 3, 4, 5 ]

>> > min(b)

1

>> > max(b)

5

  

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

>> > a

'networking is fun'

>> > a.capitalize()

'Networking is fun'

>> > a.upper()

'NETWORKING IS FUN'

>> > a

'networking is fun'

>> > b = a.upper()

>> > b

'NETWORKING IS FUN'

>> > a.split()

[ 'networking', 'is', 'fun' ]

>> > a

'networking is fun'

>> > b = a.split()

>> > b

[ 'networking', 'is', 'fun' ]

>> >

  

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

>> > routers = [ 'r1', 'r2', 'r3', 'r4', 'r5' ]

>> > routers.append('r6')

>> > routers

[ 'r1', 'r2', 'r3', 'r4', 'r5', 'r6' ]

>> > routers.insert(2, 'r100')

>> > routers

[ 'r1', 'r2', 'r100', 'r3', 'r4', 'r5', 'r6' ]

>> > routers.pop(1)

'r2'

>> > routers

[ 'r1', 'r100', 'r3', 'r4', 'r5', 'r6' ]

  

Соответствия

Python предоставляет один тип соответствия, называемый словарём. Я себе представляю словарь как базу данных для бедных, так как он содержит объекты, которые могут индексироваться ключами. Его часто называют ассоциативным массивом или таблицей хэшей в прочих языках программирования. Если вы уже применяли какие- либо подобные словарям объекты в других языках, вы будете знать, что это мощный тип, так как вы можете ссылаться на свой объект посредством читабельного ключа. Этот ключ более интуитивно понятен для тех несчастных людей, которые пытаются сопровождать ваш код, вероятно, через несколько месяцев после того как вы написали этот код в 2 часа утром. Данный объект также может быть другим типом данных, таким как список. Вы можете создать некий словарь с помощью фигурных скобок:

>> > datacenter1 = { 'spines': [ 'r1', 'r2', 'r3', 'r4' ]}

>> > datacenter1[ 'leafs' ] = [ 'l1', 'l2', 'l3', 'l4' ]

>> > datacenter1

{ 'leafs': [ 'l1', 'l2', 'l3', 'l4' ], 'spines': [ 'r1',

'r2', 'r3', 'r4' ]}

>> > datacenter1[ 'spines' ]

[ 'r1', 'r2', 'r3', 'r4' ]

>> > datacenter1[ 'leafs' ]

[ 'l1', 'l2', 'l3', 'l4' ]

  

Множества

Множество применяется для того чтобы содержать неупорядоченные коллекции объектов. В оличии от списков и кортежей наборы не имеют порядка и не могут индекисроваться числами. Однако имеется одно свойство, которое делает множества выделяющимися и полезными: все элементы в некотором наборе никогда не дублируются. Представим себе, что у вас имеется некий список IP, который вам необходимо поместить в некий список доступа. Единственная проблема в данном списке IP состоит в том, что он полон дублирований. Теперь подумайте о том как вы можете применить цикл для сортировки с целью выявления уникальных элементов, в то время как имеющийся встроенный тип множества позволил бы вам избежать все повторяющиеся элементы всего лишь одной строкой кода. Если быть честным, я не применяю множества очень часто, однако когда мне это требуется, я всегда очень благодарен их наличию. Когда создаётся множество множеств, их можно сравнивать друг с другом при помощи объединения, пересечения и различия:

>> > a = "hello"

>> > set(a)

{ 'h', 'l', 'o', 'e' }

>> > b = set([ 1, 1, 2, 2, 3, 3, 4, 4 ])

>> > b

{ 1, 2, 3, 4 }

>> > b.add(5)

>> > b

{ 1, 2, 3, 4, 5 }

>> > b.update([ 'a', 'a', 'b', 'b' ])

>> > b

{ 1, 2, 3, 4, 5, 'b', 'a' }

>> > a = set([ 1, 2, 3, 4, 5 ])

>> > b = set([ 4, 5, 6, 7, 8 ])

>> > a.intersection(b)

{ 4, 5 }

>> > a.union(b)

{ 1, 2, 3, 4, 5, 6, 7, 8 }

>> > 1 *

{ 1, 2, 3 }

>> >

  

Операторы Python

Python имеет некоторые численные операторы, которые вы ожидаете получить; отметим, что усекающее деление (//, также называемое floor division - нижним делением) усекает получаемый результат до некоторого целого и десятичной точки и возвращает целое значение. { Прим. пер.: всегда вниз, 7//3=2 и -7//2=-3 } Оператор взятия по модулю % возвращает остаток от деления:

>>> 1 + 2

3

>>> 2 - 1

1

>>> 1 * 5

5

>>> 5 / 1

5.0

>>> 5 // 2

2

>>> 5 % 2

1

  

Также имеются операции сравнения:

>> > a = 1

>> > b = 2

>> > a == b

False

>> > a > b

False

>> > a < b

True

>> > a <= b

True

  

Вы также можете обнаружить два оператора общего участия чтобы проверять содержится ли некий объект в каком- то типе последовательности:

>>> a = 'hello world'

>>> 'h' in a

True

>>> 'z' in a

False

>>> 'h' not in a

False

>>> 'z' not in a

True

  


Поделиться с друзьями:

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.1 с.