Рубрики
Без рубрики

Встроенные встроенные функции Python

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

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

любой()

любой () Встроенный принимает итебереспособность и вернут True – какой-либо элемент в указанном Iteleable является верным. Давайте посмотрим на пример:

>>> any([0,0,0,1])
True

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

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

>>> widget_one = ''
>>> widget_two = ''
>>> widget_three = 'button'
>>> widgets_exist = any([widget_one, widget_two, widget_three])
>>> widgets_exist
True

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

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

перечислять ()

Вам когда-нибудь нужно будет вести список по списку, а также нужно знать, где в списке вы были? Вы можете добавить счетчик, который вы увеличиваете, как вы, или вы можете использовать встроенный Python перечислять () Функция! Давайте попробуем это в строке!

>>> my_string = 'abcdefg'
>>> for pos, letter in enumerate(my_string):
...     print (pos, letter)
... 
0 a
1 b
2 c
3 d
4 e
5 f
6 g

В этом примере у вас есть 6-буквенная строка. В вашей петле вы обертываете строку в звонок для перечисления. Это возвращает положение каждого элемента в Iterable, а также значение. Вы печатаете их оба, чтобы вы могли видеть, что происходит. Я лично нашел много случаев использования для перечислять () Отказ Я уверен, что ты тоже.

Eval ()

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

Давайте посмотрим на простой пример:

>>> var = 10
>>> source = 'var * 2'
>>> eval(source)
20

Здесь вы создаете две переменные. Первый назначен целое число 10. Вторым имеет строку, которая имеет те же буквы, что и переменная, которую вы только что определили, и она выглядит так, как вы собираетесь умножить его на два. Однако это просто строка, поэтому это ничего не делает. Но с Eval () Вы можете сделать это что-то сделать! Вы можете увидеть его в действии на самой следующей строке, в которой вы передаете строку в Eval, и вы получаете результат. Вот почему люди думают, что Eval может быть опасным.

Есть еще одна встроенная функция под названием EXEC () который поддерживает динамическое выполнение кода Python. Это несколько «опасно» встроенно, но у него нет плохой репутации, что Eval () делает. Это аккуратный маленький инструмент, но используйте его с осторожностью.

фильтр()

Фильтр () Встроенная функция возьмет функцию и передачу и возвращает итератор для тех элементов в пределах, для которого пропущенная функция возвращает true. Это утверждение звучит немного запутанно читать, поэтому давайте посмотрим на пример:

>>> def less_than_ten(x):
...     return x < 10
... 
>>> my_list = [1, 2, 3, 10, 11, 12]
>>> for item in filter(less_than_ten, my_list):
...     print(item)
... 
1
2
3

Здесь вы создаете простую функцию, которая тестирует, если целое число вы проходите к нему меньше 10. Если это так, то он возвращает Правда ; В противном случае возвращается Ложь Отказ Затем вы создаете список из 6 целых чисел с половиной из них менее 10. Наконец, вы используете Фильтр () Чтобы отфильтровать целые числа, которые превышают десяти и печатают только те, которые меньше.

Вы можете вспомнить, что Itertools Модуль имеет функцию, которая похожа на эту называемую FilterFalse Отказ Эта функция является противоположностью этого и возвращает только элементы тотерамируемым, когда функция возвращает Ложь Отказ

карта()

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

>>> def doubler(x):
...     return x * 2
... 
>>> my_list = [1, 2, 3, 4, 5]
>>> for item in map(doubler, my_list):
...     print(item)
... 
2
4
6
8
10

Первое, что вы определяете, это функция, которая будет удвоить все, что ей передается. Далее у вас есть список целых чисел, 1-5. Наконец, вы создаете для Цвет, который петли по итератору, который возвращается при вызове карт с нашей функцией и списком. Код внутри цикла распечатает результаты.

Функции карты и фильтра в основном дублируют особенности выражений генератора в Python 3. В Python 2 они дублируют функциональные возможности потенциала списка. Вы можете сократить код выше немного и заставить его вернуть список, как так:

>>> list(map(doubler, my_list))
[2, 4, 6, 8, 10]

Но вы можете сделать то же самое со списком понимания:

>>> [doubler(x) for x in my_list]
[2, 4, 6, 8, 10]

Так что это действительно зависит от вас, который вы хотите использовать.

zip ()

Встроенный ZIP () принимает ряд повторных документов и агрегирует элементы из каждого из них. Давайте посмотрим, что это значит:

>>> keys = ['x', 'y', 'z']
>>> values = [5, 6, 7]
>>> zip(keys, values)

>>> list(zip(keys, values))
[('x', 5), ('y', 6), ('z', 7)]

В этом примере у вас есть два списка равных размеров. Далее вы устанавливаете их вместе с функцией ZIP. Это просто возвращает Zip-объект, поэтому вы обнимаете, что в вызове в список встроенных, чтобы увидеть, что является результатом. Вы в конечном итоге со списком кортежей. Здесь вы можете увидеть, что ZIP сопоставила элементы в каждом списке по позиции и поместите их на кортежи.

Одним из самых популярных случаев использования для ZIP () – взять два списка и превратить их в словарь:

>>> keys = ['x', 'y', 'z']
>>> values = [5, 6, 7]
>>> my_dict = dict(zip(keys, values))
>>> my_dict
{'x': 5, 'y': 6, 'z': 7}

Когда вы передаете серию кортежей к Python’s Dict () Встроенный, он создаст словарь, как вы можете видеть выше. Я использовал эту технику время от времени в моем собственном коде.

Обертывание

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

Связанное чтение

  • Python 101 – Узнав о словарях
  • Python 101 – Узнав о списках
  • Python 101 – Узнав о кортежах