Какое из слов не является зарезервированным в python
Перейти к содержимому

Какое из слов не является зарезервированным в python

  • автор:

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

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

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

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

def sayHello(): print('Привет, Мир!') # блок, принадлежащий функции # Конец функции sayHello() # вызов функции sayHello() # ещё один вызов функции 

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

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

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

def printMax(a, b): if a > b: print(a, 'максимально') elif a == b: print(a, 'равно', b) else: print(b, 'максимально') printMax(3, 4) # прямая передача значений x = 5 y = 7 printMax(x, y) # передача переменных в качестве аргументов 

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

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

x= 50 def func(x): print('x равен', x) x = 2 print('Замена локального x на', x) func(x) print('x по-прежнему', x) 

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

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

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

x = 50 def func(): global x print('x равно', x) x = 2 print('Заменяем глобальное значение x на', x) func() print('Значение x составляет', x) 

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

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

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

def func_outer(): x = 2 print('x равно', x) def func_inner(): nonlocal x x = 5 func_inner() print('Локальное x сменилось на', x) func_outer() 

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

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

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

def say(message, times = 1): print(message * times) say('Привет') say('Мир', 5) 

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

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

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

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

def func(a, b=5, c=10): print('a равно', a, ', b равно', b, ', а c равно', c) func(3, 7) func(25, c=24) func(c=50, a=100) 

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

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

def total(a=5, *numbers, **phonebook): print('a', a) #проход по всем элементам кортежа for single_item in numbers: print('single_item', single_item) #проход по всем элементам словаря for first_part, second_part in phonebook.items(): print(first_part,second_part) print(total(10,1,2,3,Jack=1123,John=2231,Inge=1560)) 

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

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

def total(initial=5, *numbers, extra_number): count = initial for number in numbers: count += number count += extra_number print(count) total(10, 1, 2, 3, extra_number=50) total(10, 1, 2, 3) # Вызовет ошибку, поскольку мы не указали значение # аргумента по умолчанию для 'extra_number'. 

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

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

#!/usr/bin/python # Filename: func_return.py def maximum(x, y): if x > y: return x elif x == y: return 'Числа равны.' else: return y print(maximum(2, 3)) 

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

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

def printMax(x, y): '''Выводит максимальное из двух чисел. Оба значения должны быть целыми числами.''' x = int(x) # конвертируем в целые, если возможно y = int(y) if x > y: print(x, 'наибольшее') else: print(y, 'наибольшее') printMax(3, 5) print(printMax.__doc__) 

© Copyright 2020, Oleg Kishinskii Revision 87b11443 .

Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: latest

Versions latest Downloads pdf html epub On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.

Ключевые слова Python

Ключевые слова — это часть языка. Их нельзя использовать для названия переменных, функций или классов.

Ключевое слово Описание
False Ложь
True Истина
None «Пустой» объект
and Логическое И
with / as Менеджер контекста
assert условие Возбуждает исключение, если условие ложно
break Выход из цикла
class Пользовательский тип, состоящий из методов и атрибутов
continue Переход на следующую итерацию цикла
def Определение функции
del Удаление объекта
elif В противном случае, если
else Иначе
except Перехватить исключение
finally Вместе с инструкцией try , выполняет инструкции независимо от того, было ли исключение или нет
for Цикл for
from Импорт нескольких функций из модуля
global Позволяет сделать значение переменной, присвоенное ей внутри функции, доступным и за пределами этой функции
if Если
import Импорт модуля
in Проверка на вхождение
is Проверка на идентичность
lambda Определение анонимной функции
nonlocal Позволяет сделать значение переменной, присвоенное ей внутри функции, доступным в объемлющей инструкции
not Логическое НЕ
or Логическое ИЛИ
pass Ничего не делающая конструкция
raise Возбудить исключение
return Вернуть результат
try Выполнить инструкции, перехватывая исключения
while Цикл while
yield Определение функции-генератора

Python с нуля. Освойте с Виртуальным ИИ-помощником!

Теоретические уроки и практические задачи

Пишите и проверяйте код прямо в браузере

Виртуальный ИИ-помощник поможет в любое время дня и ночи

Сообщество учеников для взаимопомощи и обмена опытом

200 000+ зарегистрированных участников. Присоединяйтесь!

Попробовать бесплатно

©2023 Letpy

Мы используем файлы cookie

Наш сайт использует файлы cookie для улучшения пользовательского опыта, сбора статистики и обеспечения доступа к обучающим материалам. Мы также передаем информацию об использовании вами нашего сайт партерам по социальным сетям, рекламе и аналитике. В свою очередь, наши партнеры могут объединять ее с другой предоставленной вами информацией, или с информацией, которую они собрали в результате использования вами их услуг.

Ключевые слова, модуль keyword

Python 3 логотип

Сегодня я по-быстрому пробегусь по всем ключевым словам в Python, а заодно и по модулю keyword.

Ключевые слова

False — ложь.

True — правда.

None — «пустой» объект.

and — логическое И.

assert условие — возбуждает исключение, если условие ложно.

break — выход из цикла.

class — пользовательский тип, состоящий из методов и атрибутов.

continue — переход на следующую итерацию цикла.

def — определение функции.

del — удаление объекта.

elif — в противном случае, если.

except — перехватить исключение.

finally — вкупе с инструкцией try, выполняет инструкции независимо от того, было ли исключение или нет.

for — цикл for.

from — импорт нескольких функций из модуля.

global — позволяет сделать значение переменной, присвоенное ей внутри функции, доступным и за пределами этой функции.

import — импорт модуля.

in — проверка на вхождение.

is — ссылаются ли 2 объекта на одно и то же место в памяти.

lambda — определение анонимной функции.

nonlocal — позволяет сделать значение переменной, присвоенное ей внутри функции, доступным в объемлющей инструкции.

not — логическое НЕ.

or — логическое ИЛИ.

pass — ничего не делающая конструкция.

raise — возбудить исключение.

return — вернуть результат.

try — выполнить инструкции, перехватывая исключения.

while — цикл while.

yield — определение функции-генератора.

Модуль keyword

В общем-то, keyword — не такой уж и модуль, но все же.

keyword.kwlist — список всех доступных ключевых слов.

keyword.iskeyword(строка) — является ли строка ключевым словом.

Для вставки кода на Python в комментарий заключайте его в теги

  • Модуль csv - чтение и запись CSV файлов
  • Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
  • Онлайн-обучение Python: сравнение популярных программ
  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов
  • Сделай свой вклад в развитие сайта!
  • Самоучитель Python
  • Карта сайта
  • Отзывы на книги по Python
  • Реклама на сайте

Слово file в python

Есть мнение, что использование слова file в качестве имени аргумента функции - это быдлокодерство. Так ли это? Это ведь не зарезервированное слово языка Python, так в чем может быть проблема?

Отслеживать
user194374
задан 12 авг 2016 в 5:49
7,738 17 17 золотых знаков 73 73 серебряных знака 133 133 бронзовых знака
А где такое мнение существует?
12 авг 2016 в 6:05
В некоторых кругах моего общения.
12 авг 2016 в 6:06

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Проблема в том, что использование переменных с теми же именами что и у __buitins__ не позволяет в той же области видимости вызывать эти самые __buitins__ . Например, часто переопределяют type , id , и если далее по коду необходимо воспользоваться встроенными одноимёнными функциями, то возникают проблемы. Ну и естественно эта проблема распространяется на аргументы функций, которые также распространяются на всю область видимости функции.

Моё мнение - пересечение области видимости с __builtins__ допустимо, но по возможности стараться избегать. Есть случаи, когда просто избежать не получается - например, когда определяешь схему базы данных и у тебя есть колонка с названием id . Не выкрутишься. В Django вместо id предпочтительнее использовать pk , например, который по умолчанию ссылается на id .

Отслеживать
ответ дан 12 авг 2016 в 6:24
3,071 12 12 серебряных знаков 20 20 бронзовых знаков
file нет в __builtins__ .
12 авг 2016 в 6:43

@Avernial В питоне 2.7 file есть в __builtins__ , и использовать сие как переменную крайне нежелательно

12 авг 2016 в 7:26
Да, действительно. Уже по умолчанию считаю, что все относится к 3 питону.
12 авг 2016 в 7:49

@andreymal: не могли бы вы привести явные доводы, почему file (именно file имя) "крайне нежелательно" использовать. Где вы видели что file используется как __builtin__.file ? Как часто такое использование обосновано?

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

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