Ограничение на глубину рекурсии 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Ограничение на глубину рекурсии



По умолчанию глубина рекурсии в языке Питон ограничена 1000 вызовов. Это ограничение можно поднять при помощи функции setrecursionlimit из модуля system. Например, чтобы увеличить возможную глубину рекурсии до 10000 нужно в начале программы выполнить две инструкции:

import sys
sys.setrecursionlimit(10000)

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

Объект map в Python

Если необходимо обработать каждый элемент списка, это можно сделать в цикле, например:

for i in s:
t[i] = int(s[i])

А можно воспользоваться специальной функцией map, которой передается два параметра — функция, которая будет применена к каждому элементу, и список (или другой итерируемый объект), к элементам которого будет применяться эта функция. На самом деле map — это объект, который можно в дальнейшем преобразовать в список, или использовать непосредственно как итератор (например, в цикле for).

s = map(int, t)

Вот несколько типичных примеров использования map:

s = list(map(int, input().split()))

a, b = map(float, input().split())

map часто использую с lambda-функциями:

t = list(map(lambda x: x[0], s)) # взять первый символ каждой строки

Lambda-функции в Python

lambda-выражения используются для создания однострочных функций, как правило с целью их моментального и единоразового использования, например, как аргумента функций sort, map и т.п.

Синтаксис: lambda параметр 1, параметр 2, …: выражение

ПРИМЕРЫ

f = lambda x, y: x * x + y * y
f(2, 3)
s.sort(key=lambda x: x[-1]) # сортировка по последней букве
s = list(map(lambda x: x - 1, s)) # уменьшить все числа на 1

Передача функции как аргумента в Python

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

ПРИМЕР

def apply(func, number1, number2):
return func(number1, number2)

print(apply(max, 1, 2), apply(lambda x, y: x - 2 * y, 100, 10))

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

s.sort(key=abs) # отсортировать числа по абсолютному значению

s = list(map(int, input().split()))

Стиль программирования (для Python)

PEP 8 — документ, описывающий соглашение о том, как писать код на языке Python. PEP 8 создан на основе рекомендаций создателя языка Гвидо ван Россума. Ключевая идея Гвидо такова: код читается намного больше раз, чем пишется. Собственно, рекомендации о стиле написания кода направлены на то, чтобы улучшить читаемость кода и сделать его согласованным между большим числом проектов. В идеале, если весь код будет написан в едином стиле, то любой сможет легко его прочесть.

Основные правила PEP 8:

Форматирование

· Используйте четыре пробела для отступов. Не делайте отступов в два пробела. Wing Ide помогает правильно расставлять пробелы. По умолчанию в Wing Ide клавиша Tab ставит четыре пробела.

· Пишите import каждого модуля в отдельной строке

· Располагайте все import 'ы в верхней части кода перед любыми глобальными объявлениями.

· Отделяйте блок import 'ов от кода пустой строкой.

· Не используйте конструкцию from … import * }

· Скобки не отделяются пробелами с внутренней стороны. Между функцией и ее аргументами пробел не ставится.

spam(ham[1], {eggs: 2}) # Правильно
spam(ham[ 1 ], { eggs: 2 }) # Неверно

· Перед запятой, двоеточием пробел не ставится, после -— ставится.

if x == 4:

print(x, y)

x, y = y, x # Правильно

if x == 4:

print(x, y)

x, y = y, x # Неверно

· Всегда окружайте следующие бинарные операторы ровно одним символом пробела с каждой стороны:

o присваивания (=, +=, -= и т. д.),

o сравнения (==, <, >,!=, <>, <=, >=, in, not in, is, is not),

o логические (and, or, not),

o арифметические (+, -, *, /, //, \%, **).

· Не располагайте несколько инструкций в одной строке. Разнесите их по разным строкам.

x = 3 # Правильно
func(10)
x = 3; func(10) # Неверно Не располагайте блок из нескольких инструкций на той же строке сразу после двоеточия (после if, while и т. д.)

Комментарии

· Комментарии, противоречащие коду, хуже, чем их отсутствие.

· Располагайте однострочные комментарии после кода в той же строке и отделяйте их от кода не менее чем двумя пробелами. Комментарии должны начинаться с # и одного пробела.

Имена

· Не используйте символы `l', `O', и `I' как имена переменных. В некоторых шрифтах они могут быть очень похожи на цифры.

· Имена переменных и функций должны содержать только маленькие буквы. Слова разделяются символами подчёркивания. Примеры:

name, name_with_several_words_in_it

· Имена констант должны содержать только заглавные буквы. Слова разделяются символами подчёркивания. Примеры:

NAME, NAME_WITH_SEVERAL_WORDS_IN_IT

· Давайте переменным говорящие английские имена, не используйте транслит.

num_letters = int(input()) # Правильно

kolvo_bukv = int(input()) # Неверно

Функции

· Разделяйте определения функций двумя пустыми строками. Отделяйте определения функций от основного кода двумя пустыми строками до и после.

· Разделяйте тело функции на логические части одной пустой строкой.



Поделиться:


Последнее изменение этой страницы: 2017-02-19; просмотров: 1010; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.19.56.45 (0.028 с.)