Почему в Python нет операторов ++ и -?

Я считаю, что этот «обратный вызов» жаргон был ошибочно использован во многих местах. Мое определение будет выглядеть примерно так:

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

Я думаю, что люди просто прочитали первое предложение определения wiki:

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

Я работал с большим количеством API-интерфейсов, смотрю различные плохие примеры. Многие люди имеют тенденцию называть указатель на функцию (ссылку на исполняемый код) или анонимные функции (часть исполняемого кода) «обратный вызов», если они являются просто функциями, для чего вам нужно другое имя для этого?

Фактически только второе предложение в определении wiki показывает различия между функцией обратного вызова и нормальной функцией:

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

, поэтому разница заключается в том, кто вы собираетесь передать функцию и как будет передана ваша переданная функция. Если вы просто определяете функцию и передаете ее другой функции и называете ее непосредственно в этом теле функции, не называйте ее обратным вызовом. Определение говорит, что ваша переданная функция будет вызвана функцией «нижнего уровня».

Я надеюсь, что люди могут перестать использовать это слово в неоднозначном контексте, это не поможет людям лучше понять только хуже.

414
задан Cœur 9 December 2018 в 13:36
поделиться

2 ответа

Я знаю, что это - старый поток, но случай наиболее популярного способа использования для ++ я не застрахован, при этом тот вручную индексирующие наборы, когда существует не обеспечено индексы. Эта ситуация состоит в том, почему Python обеспечивает, перечисляют ()

Пример: На любом данном языке, когда Вы используете конструкцию как foreach для итерации по набору - ради примера, мы даже скажем, что это - незаказанный набор, и Вам нужен уникальный индекс для всего, чтобы сказать им независимо, сказать

i = 0
stuff = {'a': 'b', 'c': 'd', 'e': 'f'}
uniquestuff = {}
for key, val in stuff.items() :
  uniquestuff[key] = '{0}{1}'.format(val, i)
  i += 1

В случаях как это, Python предоставляет перечислить метод, например,

for i, (key, val) in enumerate(stuff.items()) :
0
ответ дан 22 November 2019 в 23:20
поделиться

Другие ответы описали, почему это не нужно для итераторов, но иногда это полезно при присвоении для увеличения встроенной переменной, можно достигнуть того же эффекта с помощью кортежей и нескольких присвоение:

b = ++a становится:

a,b = (a+1,a+1)

и b = a++ становится:

a,b = a+1, a

Python 3.8 представляет присвоение :=, оператор, позволяя нам достигнуть foo(++a) с [1 111]

foo(a:=a+1)

foo(a++) все еще неуловим все же.

0
ответ дан 22 November 2019 в 23:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: