Перейти к содержимому

Запишите служебное слово с которого начинается описание функции на языке python

  • автор:

Coming Soon!

This is going to be another great website hosted by PythonAnywhere.

PythonAnywhere lets you host, run, and code Python in the cloud. Our free plan gives you access to machines with everything already set up for you. You can develop and host your website or any other code directly from your browser without having to install software or manage your own server.

Need more power? Upgraded plans start at $5/month.

Developer info

Hi! If this is your PythonAnywhere-hosted site, then you’re almost there — you just need to create a web app to handle this domain.

Функции в Python

Функция — это именованный блок кода, к которому можно обратиться из лю­бого места программы. У функции есть имя и список входных парамет­ров, а также воз­вращаемое значение.

Дана строка.

Функция позволяет использо­вать в про­грамме один и тот же фрагмент кода нес­колько раз. Разберем следующую задачу:

Дана строка, вместо про­белов у которой стоит специальный сим­вол, на­пример, *, необхо­димо заменить все специальные сим­волы на про­белы.

У нас есть строки вида:

И код, решающий эту задачу:

# Пошаговое решение
words = text. split ( ‘*’ )
print (words)
# [‘some’, ‘string’, ‘with’, ‘unnecessery’, ‘symbols’]
result = ‘ ‘ . join (words)
print (result)
# some string with unnecessery symbols

# Решение в одну строку
result = ‘ ‘ . join (text. split ( ‘*’ ))

Оба этих способа прекрасно рабо­тают до тех пор, пока у нас одна вход­ная строка. А если строк несколько?

# .
text1 = ‘i*love*Python’
text2 = ‘Python*is*great’
text3 = ‘Programming*is*simpler*than*you*think’

Можно, конечно, обрабатывать строки в цикле. Например, вот так:

lines = [text1, text2, text3]

# Пошаговое решение
result = []
for line in lines:
    result = append ( ‘ ‘ . join (line. split ( ‘*’ )))

# Решение в одну строку
results = [ ‘ ‘ . join (line. split ( ‘*’ )) for line in lines]

А если «лишний символ» для каждой строки будет различ­ным? Тогда придется обрабаты­вать каждую строку отдельно. Чтобы сделать код, приведен­ный выше, универсальным нам необходимы функции.

Объявление функции

Рассмотрим синтаксис объявле­ния функции:

def greeting (name):
print ( ‘Hello, ‘ + name)

# Вызываем функцию
greeting( ‘Max’ )
# Hello, Max
greeting( ‘Ivan’ )
# Hello, Ivan
greeting( ‘Alex’ )
# Hello, Alex
greeting( ‘Kate’ )
# Hello, Kate

Перед объявлением имени функции greeting пишется служебное слово def , а после имени функции обяза­тельно записываются круглые скобки, в которые передается параметр name

Типичное объявление функции в Python выглядит так:

def function_name ( argument1, argument2, . ):
# код функции

Представим себе работу обычного калькулятора. Мы вводим первое число, операцию и второе число. Калькулятор возвращает нам результат операции над этими числами. Всё просто, не так ли? Функции точно так же умеют возвращать значение с помощью служебного слова return .

Проиллюстрируем это на примере функции сложения двух чисел:

def add ( a, b ):
return a + b

# Вызовем нашу функцию
s1 = add (10, 2)
s2 = add (108, 100)
s3 = add (3, 1)
print (s1, s2, s3)
# 12 208 4

Напишем функцию умножения двух чисел:

def mult ( a, b ):
return a * b

# Вызовем нашу функцию
m1 = mult (10, 2)
m2 = mult (108, 100)
m3 = mult (3, 1)
print (m1, m2, m3)
# 20 10800 3

Решение задачи «лишнего сим­вола»

А теперь вернемся к примеру разо­бран­ному в начале статьи. Наша функция, назовем ее removeSymbol , будет прини­мать в качестве пара­метров символ, который нужно заме­нить на пробел, и строку, содер­жа­щую этот самый символ.

def removeSymbol ( symbol, string ):
return ‘ ‘ . join (string. split (symbol))

# Вызовем нашу функцию
formatted_text1 = removeSymbol ( ‘*’ , ‘слишком*много*звездочек’ )
formatted_text2 = removeSymbol ( ‘—‘ , ‘слишком—много—черточек’ )
print (formatted_text1)
# слишком много звездочек
print (formatted_text2)
# слишком много черточек

Аргументы по умолчанию

Рассмотрим еще раз функцию greeting . Перепишем её со служебным словом return

def greeting (name):
return ‘Hello, ‘ + name

print (greeting( ‘Alex’ ))
# Hello, Alex

Теперь функция greeting возвращает строковое значе­ние, которое мы можем прис­воить какой-нибудь переменной

helloMax = greeting ( ‘Max’ )
print (helloMax)
# Hello, Max

Но если мы приветствовать каждого пользователя по-своему? Тогда нам нужно пере­дать в greeting еще один аргумент

def greeting (name, hello):
return hello + ‘, ‘ + name

print (greeting( ‘Alex’ , ‘Hello’ ))
# Hello, Alex
print (greeting( ‘Kate’ , ‘Salute’ ))
# Salute, Kate

А что если пользователю неважно, как мы его попри­ветст­вуем? Тогда логично было бы по умолчанию использовать какое-то одно при­ветст­вие и иногда его изменять. В програм­мировании эта концепция назы­вается «аргумент по умол­чанию». Если в вызов функции не передали одного или нес­коль­ких аргументов, то будут использованы аргументы по умолчанию.

def greeting (name, hello= ‘hello’ ):
return hello + ‘, ‘ + name

print (greeting( ‘Alex’ )
# Hello, Alex
print (greeting( ‘Kate’ , ‘Salute’ ))
# Salute, Kate

3. Функции языка Python¶

Функции – это многократно используемые фрагменты программы. Они позволяют дать имя определённому блоку команд с тем, чтобы впоследствии запускать этот блок по указанному имени в любом месте программы и сколь угодно много раз. Это называется вызовом функции. Мы уже использовали много встроенных функций, как то len и range.

Функция – это, пожалуй, наиболее важный строительный блок любой нетривиальной программы (на любом языке программирования), поэтому в этой главе мы рассмотрим различные аспекты функций.

Функции определяются при помощи зарезервированного слова def. После этого слова указывается имя функции, за которым следует пара скобок, в которых можно указать имена некоторых переменных, и заключительное двоеточие в конце строки. Далее следует блок команд, составляющих функцию. На примере можно видеть, что на самом деле это очень просто:

3.1. Параметры функций¶

Функции могут принимать параметры, т.е. некоторые значения, передаваемые функции для того, чтобы она что-либо сделала с ними. Эти параметры похожи на переменные, за исключением того, что значение этих переменных указывается при вызове функции, и во время работы функции им уже присвоены их значения.

Параметры указываются в скобках при объявлении функции и разделяются запятыми. Аналогично мы передаём значения, когда вызываем функцию. Обратите внимание на терминологию: имена, указанные в объявлении функции, называются параметрами, тогда как значения, которые вы передаёте в функцию при её вызове, – аргументами.

3.2. Локальные переменные¶

При объявлении переменных внутри определения функции, они никоим образом не связаны с другими переменными с таким же именем за пределами функции – т.е. имена переменных являются локальными в функции. Это называется областью видимости переменной. Область видимости всех переменных ограничена блоком, в котором они объявлены, начиная с точки объявления имени.

3.3. Зарезервированное слово “global”¶

Чтобы присвоить некоторое значение переменной, определённой на высшем уровне программы (т.е. не в какой-либо области видимости, как то функции или классы), необходимо указать Python, что её имя не локально, а глобально (global). Сделаем это при помощи зарезервированного слова global. Без применения зарезервированного слова global невозможно присвоить значение переменной, определённой за пределами функции.

Можно использовать уже существующие значения переменных, определённых за пределами функции (при условии, что внутри функции не было объявлено переменной с таким же именем). Однако, это не приветствуется, и его следует избегать, поскольку человеку, читающему текст программы, будет непонятно, где находится объявление переменной. Использование зарезервированного слова global достаточно ясно показывает, что переменная объявлена в самом внешнем блоке.

3.4. Зарезервированное слово “nonlocal”¶

Мы увидели, как получать доступ к переменным в локальной и глобальной области видимости. Есть ещё один тип области видимости, называемый “нелокальной” (nonlocal) областью видимости, который представляет собой нечто среднее между первыми двумя. Нелокальные области видимости встречаются, когда вы определяете функции внутри функций.

Поскольку в Python всё является выполнимым кодом, вы можете определять функции где угодно.

3.5. Значения аргументов по умолчанию¶

Зачастую часть параметров функций могут быть необязательными, и для них будут использоваться некоторые заданные значения по умолчанию, если пользователь не укажет собственных. Этого можно достичь с помощью значений аргументов по умолчанию. Их можно указать, добавив к имени параметра в определении функции оператор присваивания (=) с последующим значением.

Обратите внимание, что значение по умолчанию должно быть константой. Или точнее говоря, оно должно быть неизменным[1] – это объясняется подробнее в последующих главах. А пока запомните это.

Важно Значениями по умолчанию могут быть снабжены только параметры, находящиеся в конце списка параметров. Таким образом, в списке параметров функции параметр со значением по умолчанию не может предшествовать параметру без значения по умолчанию. Это связано с тем, что значения присваиваются параметрам в соответствии с их положением. Например, def func(a, b=5) допустимо, а def func(a=5, b) – не допустимо.

3.6. Ключевые аргументы¶

Если имеется некоторая функция с большим числом параметров, и при её вызове требуется указать только некоторые из них, значения этих параметров могут задаваться по их имени – это называется ключевые параметры. В этом случае для передачи аргументов функции используется имя (ключ) вместо позиции (как было до сих пор).

Есть два преимущества такого подхода: во-первых, использование функции становится легче, поскольку нет необходимости отслеживать порядок аргументов; во-вторых, можно задавать значения только некоторым избранным аргументам, при условии, что остальные параметры имеют значения аргумента по умолчанию.

3.7. Переменное число параметров¶

Иногда бывает нужно определить функцию, способную принимать любое число параметров. Этого можно достичь при помощи звёздочек (сохраните как function_varargs.py):

3.8. Только ключевые параметры¶

Если некоторые ключевые параметры должны быть доступны только по ключу, а не как позиционные аргументы, их можно объявить после параметра со звёздочкой (сохраните как keyword_only.py):

3.9. Оператор “return”¶

Оператор return используется для возврата[5] из функции, т.е. для прекращения её работы и выхода из неё. При этом можно также вернуть некоторое значение из функции.

3.10. Строки документации¶

Python имеет остроумную особенность, называемую строками документации, обычно обозначаемую сокращённо docstrings. Это очень важный инструмент, которым вы обязательно должны пользоваться, поскольку он помогает лучше документировать программу и облегчает её понимание. Поразительно, но строку документации можно получить, например, из функции, даже во время выполнения программы!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *