Учебная страница курса биоинформатики,
год поступления 2014
Памятка к практикуму 11
Функции
Функция - это часть питоновской программы, у которой есть имя, входы (аргументы) и выход (результат).
Функция задается так:
Код функции пишется с отступом. Функция может принимать не менее 0 аргументов, после имени функции в скобках перечисляются имена, под которыми её аргументы будут известны внутри функции. (Если аргументов 0 (нет), то пишутся пустые круглые скобки, если аргумент один, то пишется только его имя, без запятой после него.)
Чтобы вернуть результат, в функции пишется ключевое слово return, после которого пишется то, что возвращаем. Если исполнение дошло до return, функция прекращает работу, даже если в ней есть ещё код, расположенный ниже return.
Если функция ничего не возвращает, то return можно не писать.
Напишем функцию, считающую квадрат числа и используем её:
Обратите внимание, что число a внутри функции sqr называется x, потому что так называется её первый аргумент.
Встретив def python запоминает функцию, но ее команд не выполняет. Выполнение функции происходит в строчке b = sqr(a)
Еще один пример:
Дополнительный материал про рекурсивные функции
Модули
Модулем называется питоновский файл, содержащий функции.
Предположим, у нас есть модуль foo.py, содержащий функцию sqr, которая возвращает квадрат своего аргумента:
Воспользуемся этим модулем из файла bar.py:
Дополнительный материал про модули
Из недосказанного
Метод .read(), будучи вызванным на файловом объекте, возвращает содержимое файла как одну строку. Если файл уже читали (например, преобразовывали его в список строк), этот метод (как и .readline()) не сработает.
(А что будет, если сначала вызвать .readline(), а затем .readlines() или .read()? Другой потенциально полезный вопрос: что вернёт метод .read(), если ему в качестве аргумента передать целое число; например, что попадёт в переменную fg после выполнения оператора fg = indata.read(1), где indata — файловый объект, созданный посредством open? Проверьте!)
У строки есть метод replace(что искать, на что заменять), который возвращает новую строку, в которой все подстроки, совпадающие с первым аргументом, заменены вторым аргументом.
Некоторые встроенные модули
math - математические операции и числа / официальная документация (англ.)
округление числа с недостатком и с избытком (ceil(x), floor(x)), факториал целого положительного числа factorial(n))
тригонометрия (pi, sin(x), cos(x), tan(x), asin(x), acos(x), atan(x))
степени и логирифмы (e, exp(x), log(a, x), pow(x, y), srqt(x))
random - случайные числа / официальная документация (англ.)
random.randint(a, b) - случайное целое число от a до b включительно
random.choice(строка) - случайный символ строки
random.choice(список) - случайный элемент списка
random.shuffle(список) - перемешивает список (меняется сам список)
random.random() - случайное число в полуинтервале [0.0, 1.0)
sys - процесс / официальная документация (англ.)
sys.argv - список аргументов командной строки, включая имя самого скрипта, которое в списке будет под индексом 0.
Обратите внимание! sys.argv - это список, а не метод. Поэтому после argv скобки не ставятся. Пример:
os - операционная система и работа с файлами / официальная документация (англ.)
os.rename(старое имя, новое имя) - переименовывает файл или директорию
os.system(команда) - запустить команду, подождать, пока она отработает и получить её код возврата как результат вызова функции os.system
- Узнать другие возможности: help(os)в интерактивном режиме
urllib2 - загрузка файлов из сети / официальная документация (англ.)
urllib2.urlopen(URL) - возвращает как бы файловый объект, через который можно получать содержимое страницы по URL. Пример:
1 import urllib2
2
3 html_lines = list(urllib2.urlopen('https://kodomo.fbb.msu.ru/index.html'))
4 for line in html_lines:
5 print line
6 # Print line by line spesified html-file
7
8 gbk_file = urllib2.urlopen('ftp://ftp.ncbi.nlm.nih.gov/genomes/Viruses/Aichi_virus_uid15441/NC_001918.gbk').read()
9 g = open("aichi_virus.gbk", 'w')
10 g.write(gbk_file)
11 # Download GeneBank file and write it into file aichi_virus.gbk
sys.stdin - объект-файл, представляющий входной поток (то, что вводят с клавиатуры)
sys.stdout - объект-файл, представляющий выходной поток (то, что печатается на экран print'ом)
sys.stderr - объект-файл, представляющий поток ошибок (там, где питон ругается в случае ошибок). По умолчанию совпадает с stdout
sys.exit(код возврата) - завершить программу. Если подать код возврата, отличный от 0, это будет означать, что программа завершилась с ошибкой. Если вызвать метод без аргумета, будет то же, как если бы вызвали с аргументом 0