Что означают квадратные скобки в документации?
Часто в документации встречаются квадратные скобки, например _.get(object, path, [defaultValue]) — что они означают?
- Количеству голосов ▼
- Дата создания
06 апреля 2022
Таким образом в документации отмечают необязательные параметры, то есть на примере _.get(object, path, [defaultValue]) — этот метод можно вызвать как с двумя параметрами object и path , так и с тремя(добавляется defaultValue ). Третий параметр не обязательный, он указывает какое значение вернуть, если в объекте не будет значение в указанном пути:
const object = 'a': [ 'b': 'c': 3 > >] >; // Вызов с двумя параметрами: _.get(object, 'a[0].b.c'); // => 3 // Ещё один вызов с двумя параметрами: _.get(object, ['a', '0', 'b', 'c']); // => 3 // Вызов с тремя параметрами: _.get(object, 'a.b.c', 'default'); // => 'default'
Основы Python — кратко. Часть 3. Списки, кортежи, файлы.
Также следует заметить что это это, видимо, последний «простой урок», дальше я постараюсь углубиться во все аспекты программирования, которые мы прошли «по верхам» и продолжить более детально.
В общем, те кому не интересно — читают следующую новость, а остальных — прошу пройти .
Python для начинающих. Глава третья. «List, tuple, etc.»
Кортежи.
Кортежи (англ. tuple) используется для представления неизменяемой последовательности разнородных объектов. Они обычно записываются в круглых скобках, но если неоднозначности не возникает, то скобки можно опустить.
>>> t = (2, 2.05, "Hello") >>> t (2, 2.0499999999999998, 'Hello') >>> (a, b, c) = t >>> print a, b, c 2 2.05 Hello >>> z, y, x = t >>> print z, y, x 2 2.05 Hello >>> a=1 >>> b=2 >>> a,b=b,a >>> print a,b 2 1 >>> x = 12, >>> x (12,)
Как видно из примера, кортеж может быть использован и в левой части оператора присваивания. Значения из кортежа в левой части оператора присваивания связываются с аналогичными элементами правой части. Этот факт как раз и дает нам такие замечательные возможности как массовая инициализация переменных и возврат множества значений из функции одновременно. Последний пример демонстрирует создание кортежа из одного элмента (его часто называют синглтоном).
Списки
В Пайтоне отсутствуют массивы в традиционном понимании этого термина. Вместо них для хранения однородных (и не только) объектов используются списки. Они задаются тремя способами.
>>> a = [2, 2.25, "Python"] >>> a [2, 2.25, 'Python']
Преобразуем строку в список
>>> b = list("help") >>> b ['h', 'e', 'l', 'p']
Создание с помощью списковых включений. В данном случае мы берем кубы всех нечетных чисел от 0 до 19. Этому синтаксису я планирую посвятить отдельное занятие.
>>> c = [x ** 3 for x in range(20) if x%2==1] >>> c [1, 27, 125, 343, 729, 1331, 2197, 3375, 4913, 6859]
Для работы со списками определен ряд операторов и функций:
len(s) Длина последовательности s
x in s Проверка принадлежности элемента последовательности. В новых версиях Python можно проверять принадлежность подстроки строке. Возвращает True или False
x not in s = not x in s
s + s1 Конкатенация последовательностей
s*n или n*s Последовательность из n раз повторенной s. Если n < 0, возвращается пустая последовательность.
s[i] Возвращает i-й элемент s или len(s)+i-й, если i < 0
s[i:j:d] Срез из последовательности s от i до j с шагом d будет рассматриваться ниже
min(s) Наименьший элемент s
max(s) Наибольший элемент s
s[i] = x i-й элемент списка s заменяется на x
s[i:j:d] = t Срез от i до j (с шагом d) заменяется на (список) t
del s[i:j:d] Удаление элементов среза из последовательности
Кроме того, для списков определен ряд методов.
append(x) Добавляет элемент в конец последовательности
count(x) Считает количество элементов, равных x
extend(s) Добавляет к концу последовательности последовательность s
index(x) Возвращает наименьшее i, такое, что s[i] == x. Возбуждает исключение ValueError, если x не найден в s
insert(i, x) Вставляет элемент x в i-й промежуток
pop(i) Возвращает i-й элемент, удаляя его из последовательности
reverse() Меняет порядок элементов s на обратный
sort([cmpfunc]) Сортирует элементы s. Может быть указана своя функция сравнения cmpfunc
Для преобразования кортежа в список есть функция list, для обратной операции — tuple.
Об индексировании списков и выделении подпоследовательностей следует еще раз упомянуть отдельно (этот механизм работает аналогично и для строк). Для получения элемента используются квадратные скобки, в которых находится индекс элемента. Элементы нумеруются с нуля. Отрицательное значение индекса указывает на элементы с конца. Первый с конца списка (строки) элемент имеет индекс -1.
>>> s = [0, 1, 2, 3, 4] >>> print s[0], s[-1], s[3] 0 4 3 >>> s[2] = -2 >>> print s [0, 1, -2, 3, 4] >>> del s[2] >>> print s [0, 1, 3, 4]
Сложнее обстоят дела со срезами. Для получения срезов последовательности в Пайтоне принято указывать не номера элементов, а номера «промежутков» между ними. Перед первым элементом последовательности промежуток имеет индекс 0, перед вторым – 1 и так далее. Отрицательные значения отсчитывают элементы с конца строки.
В общем виде срез записывается в следующем виде:
список[начало: конец: шаг]
По умолчанию начало среза равно 0, конец среза равен len(список), шаг равен 1. Если шаг не указывается, второй символ «:» можно опустить.
С помощью среза можно указать подмножество для вставки списка в другой список, даже при нулевой длине. Это удобно для вставки списка в строго определенной позиции.
>>> l = range(12) >>> l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] >>> l[1:3] [1, 2] >>> l[-1:] [11] >>> l[::2] [0, 2, 4, 6, 8, 10] >>> l[0:1]=[-1,-1,-1] >>> l [-1, -1, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] >>> del l[:3] >>> l [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Словари
Словарь (хэш, предопределенный массив) – изменяемая структура данных, предназначенная для хранения элементов вида ключ: значение. Все легко показывается на примере.
>>> h1 = >>> h2 = >>> h3 = #Цикл по паре ключ-значение >>> for key, value in h1.items(): . print key, " ", value . 1 one 2 two 3 three #Цикл по ключам >>> for key in h2.keys(): . print key, " ", h2[key] . 0 zero 5 five #Цикл по значениям >>> for v in h3.values(): . print v . 2 3 1 #Добавление элементов из другого хеша >>> h1.update(h3) #Количество пар в хеше >>> len(h1) 6
Тип file
Объекты этого типа предназначены для работы с внешними данными. Чаще всего данному объекту соответствует файл на диске, но это далеко не всегда так. Файловые объекты должны поддерживать основные методы: read(), write(), readline(), readlines(), seek(), tell(), close() и т.п.
Следующий пример показывает копирование файла:
f1 = open("file1.txt", "r") f2 = open("file2.txt", "w") for line in f1.readlines(): f2.write(line) f2.close() f1.close()
(этот пример можно записать массой других способов, многие из которых сильно отличаются по оптимальности, но это тоже тема отдельного разговора)
В принципе, большинству функций абсолютно безразлично, передан им объект типа файл, или любой другой объект с такими же методами. Так, приведенный выше пример можно очень легко модифицировать для скачивания файла из Интерне, заменив в нем первую строку на следующий код.
import urllib f1 = urllib.urlopen("http://python.onego.ru")
Задачи:
— Разработать программу «массовой закачки» URL-ов из файла urls.txt
— Разработать программу, скачивающую страницу по указанному URL со всем ее содержимым.
— Написать программу, которая получив на входе произвольный список удалит из него все повторяющиеся элементы.
Питонисты, прекратите использовать квадратные скобки для получения значений из словаря
Привет, Хабр! представляю вашему вниманию перевод статьи «Stop Using Square Bracket Notation to Get a Dictionary’s Value in Python» автора Jonathan Hsu.
Выходим за рамки традиционного метода и защищаем свой код
Словарь — это несортированный набор ключей и значений. Это значит, что:
- Каждый элемент словаря состоит из термина (ключ) и его определения (значение).
- Ключи должны быть уникальными для данного словаря — никаких повторений.
- Ключи в словаре не имеют такого явного порядка расположения, который есть у элементов списка.
author =
Традиционный (и небезопасный) способ получения значения из словаря.
При обычном доступе к значению элемента из словаря используются квадратные скобки. При использовании такой записи после имени словаря в квадратных скобках указывается ключ:
author = < "first_name": "Robinson", "last_name": "Crusoe", "username": "Friday1719" >print(author['username']) # выведет Friday1719 print(author['middle_initial']) # получим ошибку KeyError: 'middle_initial'
Обратите внимание, что попытка обратиться к значению по ключу, которого нет в словаре, вызовет исключение KeyError. Это может создать серьёзные проблемы, особенно при работе с непредсказуемыми рабочими данными.
Конечно, можно воспользоваться конструкцией try/except или использовать инструкцию if. Но такое повышенное внимание к столь простой операции лишь загромождает код.
author = <> try: print(author['username']) except KeyError as e: print(e) # 'username' if 'username' in author: print(author['username'])
Если у вас за плечами опыт разработки на JavaScript, то вам, возможно, захочется получить значение из словаря с помощью точечной нотации. Но в Python’е это не сработает.
author = < "first_name": "Robinson", "last_name": "Crusoe", "username": "Friday1719" >print(author.username) # AttributeError: 'dict' object has no attribute 'username'
Используем метод get()
Когда вам нужно получить значение из словаря, то самым безопасным способом будет использование метода get(). У этого метода есть два параметра:
- Первый (обязателен): имя ключа, по которому мы хотим получить значение. Это имя может быть строкой или может быть именем переменной, если наш ключ может меняться по ходу программы.
- Второй (не обязателен): значение, которое будет использовано, если нашего ключа в словаре вдруг не окажется.
author = < "first_name": "Robinson", "last_name": "Crusoe", "username": "Friday1719" >print(author.get('username')) # выведет Friday1719 print(author.get('middle_initial', “Monday1917”)) # выведет Monday1917
Если ключ существует в словаре, то метод get() работает точно таким же образом, как и обращение по ключу в квадратных скобках. Зато в случае, когда такого ключа в словаре нет, метод get() вернёт значение по умолчанию, избавив вас от необходимости обрабатывать исключение.
Значением по умолчанию может быть любой допустимый в данном контексте объект. Не забывайте о том, что этот параметр не обязателен. Поэтому, если вы его не укажете явным образом, то при попытке обратиться по несуществующему в словаре ключу, метод get() вернёт объект None.
Используем метод setdefault()
Иногда вам будет нужно не только безопасно получить данные из словаря, но и также безопасно добавить новые данные в словарь. Для этого у словарей есть метод setdefault(). Он имеет те же параметры, что и метод get(), но в отличие от последнего, при обращении к словарю по несуществующему ключу, он не только вернёт переданное по умолчанию значение, но и создаст в словаре новый элемент с этим ключом и переданным значением. Если при обращении к словарю с помощью метода setdefault() передаваемый ключ уже есть в словаре, то данный метод оставит словарь без изменений.
author =
print(author.setdefault(‘username’)) # выведет Friday1719
print(author.setdefault(‘middle_initial’, “Monday”)) # выведет Monday и создаст
# в словаре элемент с ключом ‘middle_initial’ и значением для этого ключа “Monday”
В примере выше мы видим, что поведение метода setdefault() ничем не отличается от поведения метода get() или от применения квадратных скобок при обращении к словарю по существующему в нём ключу. В случае, если такого ключа в словаре нет, то метод setdefault() не только вернёт в программу значение своего второго аргумента (как и метод get()), но и создаст в словаре элемент с переданными ему ключом и значением. Это поведение метода setdefault() и отличает его от метода get().
Теперь, если выполнить пример выше и вывести элементы словаря, то мы получим такой результат:
print(author)
Применение методов get() и setdefault() является первоклассной техникой при обращении к значениям словаря. Нужно лишь время, чтобы отказаться от старых привычек и начать использовать эту технику на практике.
Если вам нужно только получить значение из словаря, то ваш помощник — метод get().
Если же вам нужно безопасно добавить новое значение в словарь, то вызывайте метод setdefault().
- python3
- pythonic
- практика программирования
Что означают квадратные скобки в коде


Зачем нужны квадратные скобки в данном коде?
def total(initial=5, *numbers, **keywords): count = initial for number in numbers: count.

Что означают квадратные скобки [ ]
Господа, что означают квадратные скобки в таких выражениях, как const char text = или while.

Что означают квадратные скобки
Добрый день. Может не в той теме вопрос. Есть квадратные скобки . Как это работает? $ ls .
Что означают квадратные скобки в данной функции?
Вопрос может покажется и глупым, но подскажите, что означают квадратные скобки в данной функции.