Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
def mylist(val, lst=[]): lst.append(val) return lst
Содержание книги
- При импорте можно изменить имя,с которым объект будет связан,с помощью as.В первом
- digits = re.compile("\d+") print argv[0], environ
- Help on built-in function len: len(...)
- Сравнение двух значений.Результат:отрицательный,ноль или
- Функции для доступа к внутренним структурам
- Функции для работы с атрибутами
- Выход из программы. Можно передать числовой код
- наименьшее целое,большее или равное x
- Размешивает элементы изменчивой последовательности s на
- locale.setlocale(locale.LC_ALL, None)
- quot;""Модуль для вычисления простых чисел от 2 до N """
- gt;>> profile.run("Sieve.primes(100000)")
- file: test_Sieve.py import Sieve, sets import unittest
- Sieve - Модуль для вычисления простых чисел от 2 до N
- Взаимодействие с операционной системой
- chmod(path, mode) Устанавливает режим доступа к path в значение mode.Режим доступа
- использовать константы из модуля stat,например stat.ST_MTIME
- Модуль tempfile. Import tempfile. F = tempfile. Temporaryfile(). F. Write("0"*100) # записывается сто символов 0 F. Seek(0) # уст. Указатель на начало файла. Print len(f. Read()) # читается до конца файла и вычисляется длина. Обработка текстов.
- mydata = ("abc", 12, [1, 2, 3]) output_file = open("mydata.dat", "w") p = pickle.Pickler(output_file) p.dump(mydata)
- Эта категория модулей имеет применение только для конкретных операционных систем и семейств операционных систем.Довольно большое число модулей в стандартной поставке
- Поддержка Internet. Форматы данных
- Лекция#3:Элементы функционального
- Функциональная программа. Функция: определение и вызов
- Лучше всего рассмотреть синтаксис определения функции на нескольких примерах.После
- args - список аргументов в порядке их указания при вызове return max(args), min(args)
- def mylist(val, lst=[]): lst.append(val) return lst
- Функции как параметры и результат
- gt;>> print range(1, 10)
- Частный случай применения map()-использование None в качестве первого аргумента.В
- return reduce(lambda x, y: x + y, lst, start)
- Итераторы можно применять вместо последовательности в операторе for. Более того,внутренне оператор for запрашивает от последовательности ее итератор. Объект
- def forit(mystate=[]): if len(mystate) < 3: mystate.append(" ")
- Функции itertools.imap(), itertools.starmap() и itertools.ifilter()
- lst = map(lambda x: math.sin(x*.4), range(30))
- quot;""Итератор последовательности Фибоначчи до N"""
- for line in (l.replace("- ", " - ") for l in open("input.dat")): print line
- print subtract(3, 2) subtract_from_3 = curry(subtract, 3) print subtract_from_3(2)
- Все данные в нем представляются объектами.
- С точки зрения объектно-ориентированного подхода,объект-это нечто,обладающее
- Интерпретатор языкаPythonвсегда может сказать,к какому типу относится объект.Однако
- Пока что вpythonесть"классические"и"новые"классы. Первые классы определяются сами по себе,а вторые обязательно ведут свою родословную от класса object. Для целей
- from sets import Set as set # тип для множества
- def getx(self): return self.__x
- Этот метод вызывается при присваивании значения некоторому атрибуту.В отличие от __getattr__(),метод всегда вызывается,а
- print ad.a, ad.b, ad.c ad.d = 512
- print get_last([1, 2, 3]) print get_last("abcd")
- gt;>> class A(object): pass
- class ABC: a = ma b = mb c = mc
- В случае,когда надклассы имеют одинаковые методы,использование того или иного метода определяется порядком разрешения методов(method resolution order). Для
- quot;""Поместить элемент на стек"""
def mylist(val, lst=[]): lst.append(val) return lst
print mylist(1), print mylist(2)
Вместо ожидаемого [1] [2] получается [1] [1, 2],так как добавляются элементы к"значению по умолчанию".
Правильный вариант решения будет,например,таким:
def mylist(val, lst=None):
lst = lst or [] lst.append(val) return lst
Конечно,приведенная выше форма может использоваться для хранения в функции некоторого состояния между ее вызовами,однако,практически всегда вместо функции с таким побочным эффектом лучше написать класс и использовать его экземпляр.
Рекурсия
В некоторых случаях описание функции элегантнее всего выглядит с применением вызова этой же функции.Такой прием,когда функция вызывает саму себя,называется рекурсией.В функциональных языках рекурсия обычно используется много чаще,чем итерация(циклы).
В следующем примере переписывается функция bin() в рекурсивном варианте:
def bin(n):
"""Цифры двоичного представления натурального числа """
if n == 0: return []
n, d = divmod(n, 2) return bin(n) + [d]
print bin(69)
Здесь видно,что цикл while больше не используется,а вместо него появилось условие окончания рекурсии:условие,при выполнении которого функция не вызывает себя.
Конечно,в погоне за красивым рекурсивным решением не следует упускать из виду эффективность реализации.В частности,пример реализации функции для вычисления n-го числа Фибоначчи это демонстрирует:
def Fib(n): if n < 2:
return n else:
return Fib(n-1) + Fib(n-2)
В данном случае количество рекурсивных вызовов растет экспоненциально от числа n,что совсем не соответствует временной сложности решаемой задачи.
В качестве упражнения предлагается написать итеративный и рекурсивный варианты этой функции,которые бы требовали линейного времени для вычисления результата.

Предупреждение:
При работе с рекурсивными функциями можно легко превысить глубину допустимой вPython рекурсии. Для настройки глубины рекурсии следует использовать функцию setrecursionlimit(N) из модуля sys,установив требуемое значение N.
|