Уведомления

Группа в Telegram: @pythonsu

#1 Май 12, 2021 22:50:28

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Будь ласка допоможіть

doza_and
Вы перешли на молоко в полиэтиленовых пакетах?
Его можно перелить в другую ёмкость, в которой не будет пустоты при любом количестве молока в ней. А найти молоко в пакетах изначально может быть просто нереально. В магазинах такое может просто не продаваться, а свою корову негде размещать.

Ocean , давай уже про сумму ей (будьласке) вторую задачу делай.



Отредактировано py.user.next (Май 12, 2021 22:52:17)

Офлайн

#2 Май 13, 2021 03:38:11

Ocean
Зарегистрирован: 2021-03-14
Сообщения: 131
Репутация: +  9  -
Профиль   Отправить e-mail  

Будь ласка допоможіть

py.user.next
Ocean , давай уже про сумму ей (будьласке) вторую задачу делай.
Я сделала ее, но туплю

Я добавила пару функций, которые генерят рандомные n и x, чтобы будьласка не придумывала их каждый раз при запуске программы

  
#!/usr/bin/env python3
 
# Calculate sum when given
# n - natural number
# x - real number
 
import math
import random
 
def random_n():
	n = random.randint(1, 10)
	# print('n=', n)
	return n
 
def random_x():
	multiplier = random.randrange(1, 1000, 10)
	x = round((random.random() * 2 - 1) * multiplier, 2)
	return x
 
def is_sum(n, x):
	y = 0
	for k in range(1, n+1):
	    y += (math.factorial(2 * k) + abs(x)) / math.factorial(k ** 2)
	return y
 
def main():
	n = random_n()
	x = random_x()
	y = is_sum(n, x)
 
	print('x=', x)
	print('n=', n)
	print('y=', y)
 
if __name__ == '__main__':
	main()
 

Отредактировано Ocean (Май 13, 2021 04:16:56)

Офлайн

#3 Май 13, 2021 09:29:38

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Будь ласка допоможіть

Есть два взаимоисключающих правила именования функций: декларативный и императивный. Декларативное имя функции отвечает на вопрос “что делает эта функция?”. Кратко “что делает?”. Императивное имя функции отвечает на вопрос “что нужно сделать этой функции?”. Кратко “что сделать?”.

Поменяй названия функций так, чтобы каждая функция отвечала на вопрос “что сделать?” - в императивный вид. Функцию main() не трогай, так как она особенная.
Слово is в функциях означает “является …”, поэтому такие функци отвечают на вопрос “что делает?”.

В питоне функция print() переводится как “вывести”, а отвечает она на вопрос “что надо сделать этой функции?”. Если бы эта функция отвечала на вопрос “что делает эта функция?”, то она называлась бы prints() и переводилась бы как “выводит”.
То же самое касается функци filter() - “отфильтровать”.
То же самое касается функци map() - “отобразить”.
То же самое касается функци enumerate() - “перечислить”.



Отредактировано py.user.next (Май 13, 2021 09:32:17)

Офлайн

#4 Май 13, 2021 12:17:07

Ocean
Зарегистрирован: 2021-03-14
Сообщения: 131
Репутация: +  9  -
Профиль   Отправить e-mail  

Будь ласка допоможіть

py.user.next
Переделала имена и добавила докстринги.

  
#!/usr/bin/env python3
 
# Calculate sum when given
# n - natural number
# x - real number
 
import math
import random
 
def set_random_n():
	''' Return number of sequence element for calculating nth partial sums of the series'''
	n = random.randint(1, 10)
	return n
 
def set_random_x():
	''' Return value of x from a set of real numbers'''
	multiplier = random.randrange(1, 1000, 10)
	x = round((random.random() * 2 - 1) * multiplier, 2)
	return x
 
def calculate_sum(n, x):
	''' Return nth partial sums of the series '''
	y = 0
	for k in range(1, n+1):
	    y += (math.factorial(2 * k) + abs(x)) / math.factorial(k ** 2)
	return y
 
def main():
	n = set_random_n()
	x = set_random_x()
	y = calculate_sum(n, x)
 
	print('x=', x)
	print('n=', n)
	print('y=', y)
 
if __name__ == '__main__':
	main()
 

А ты понимаешь точную постановку задачи №4 на скане будьласки?
Вычислить произведение отрицательных значений функции z. В какой точке (х) функция достигает максимального значения.
Мне что самой такую функцию надо придумать? Или тут в задании чего-то не хватает?

Отредактировано Ocean (Май 13, 2021 12:27:36)

Офлайн

#5 Май 13, 2021 22:14:39

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Будь ласка допоможіть

Ocean
А ты понимаешь точную постановку задачи №4 на скане будьласки?
Вычислить произведение отрицательных значений функции z. В какой точке (х) функция достигает максимального значения.
Мне что самой такую функцию надо придумать? Или тут в задании чего-то не хватает?
Задача поставлена точно. Любая функция имеется в виду. Но будьласка не написала, какая функция имеется в виду. А для её уровня эта функция должна быть указана, иначе она не решит эту задачу. Поэтому мы эту задачу не делаем.
Условие задачи не запрещает нам выдумывать любые недостающие данные. Поэтому задач тут можно наплодить бесконечное множество. И таких задач можно наплодить даже без этой задачи, а просто сами по себе.

Дальше по именам
Функция set_random_x() где или в чём устанавливает произвольное x? Имя функции должно описывать то, что делается внутри функции. К наружнему окружению имя функции не относится.

Дальше по комментариям
Вот я прочитал заголовок функции и её комментарий
  
def calculate_sum(n, x):
    ''' Return nth partial sums of the series '''
и не понял, что такое n и x. Точно не могу сказать, связаны ли n из аругмента и nth из комментария. И про какой именно ряд речь идёт, тоже не понял.
То есть это всё неинформативно. Я просто прочитал это и не узнал ничего.
А содержимое функции я читать не буду, так как этих функций сотни, каждую не прочитаешь, времени просто не хватит, и не все они маленькие и понятные сходу.
В комментарии должно быть написано, что означает каждый аргумент и что возвращается из функции, по какому принципу аргументы превращаются в возвращаемое значение.

Дальше по отступам
У тебя используются и табуляции, и четыре пробела. Нужно использовать что-то одно. Табуляции хороши тем, что это один байт. Но табуляции плохи тем, что их отображение нужно настраивать в каждой среде редактирования кода (если есть такая возможность), иначе они по умолчанию слишком широкие (восемь пробелов обычно) и пара-тройка уровней вложенности уезжает далеко и надолго за край экрана в разных системах отображения кода. Пробелы хороши тем, что не требуют настройки в разных средах редактирования кода. Пробелы плохи тем, что занимают по четыре байта и таким образом тратят память на диске (четыре байта на один отступ).
Используем четыре пробела везде.



Отредактировано py.user.next (Май 13, 2021 22:22:25)

Офлайн

#6 Май 14, 2021 13:07:36

Ocean
Зарегистрирован: 2021-03-14
Сообщения: 131
Репутация: +  9  -
Профиль   Отправить e-mail  

Будь ласка допоможіть

py.user.next
Дальше по отступам
У тебя используются и табуляции, и четыре пробела. Нужно использовать что-то одно. Табуляции хороши тем, что это один байт. Но табуляции плохи тем, что их отображение нужно настраивать в каждой среде редактирования кода (если есть такая возможность), иначе они по умолчанию слишком широкие (восемь пробелов обычно) и пара-тройка уровней вложенности уезжает далеко и надолго за край экрана в разных системах отображения кода. Пробелы хороши тем, что не требуют настройки в разных средах редактирования кода. Пробелы плохи тем, что занимают по четыре байта и таким образом тратят память на диске (четыре байта на один отступ).
Используем четыре пробела везде.
У меня везде табуляции, это при переносе сюда подправляла руками иногда.
Поняла, перехожу везде на 4 пробела.

py.user.next
Задача поставлена точно. Любая функция имеется в виду. Но будьласка не написала, какая функция имеется в виду. А для её уровня эта функция должна быть указана, иначе она не решит эту задачу. Поэтому мы эту задачу не делаем.
Условие задачи не запрещает нам выдумывать любые недостающие данные. Поэтому задач тут можно наплодить бесконечное множество. И таких задач можно наплодить даже без этой задачи, а просто сами по себе.
Спасибо, стало все понятно)

py.user.next
Дальше по именам
Функция set_random_x() где или в чём устанавливает произвольное x? Имя функции должно описывать то, что делается внутри функции. К наружнему окружению имя функции не относится.
функция генерирует случайное действительное число, которое будет использоваться как значение переменной х
generate_random_real_x() будет звучать понятнее?

py.user.next
Дальше по комментариям
Вот я прочитал заголовок функции и её комментарий и не понял, что такое n и x. Точно не могу сказать, связаны ли n из аргумента и nth из комментария. И про какой именно ряд речь идёт, тоже не понял.

А вот так понятнее?

   
def calculate_sum(n, x):
	'''Element of given series expresses with formula (2k! +|x|) / (k**2)!
	where:
	x is real
	k is natural and k is defined in the interval 1 <= k <= n
 
	Return nth partial sums of the series '''

Отредактировано Ocean (Май 14, 2021 13:07:47)

Офлайн

#7 Май 14, 2021 20:34:22

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Будь ласка допоможіть

Ocean
py.user.next
Функция set_random_x() где или в чём устанавливает произвольное x? Имя функции должно описывать то, что делается внутри функции. К наружнему окружению имя функции не относится.
функция генерирует случайное действительное число, которое будет использоваться как значение переменной х
generate_random_real_x() будет звучать понятнее?
Вот мы отделили твою функцию от кода
  
>>> import random
>>> 
>>> def set_random_x():
...     ''' Return value of x from a set of real numbers'''
...     multiplier = random.randrange(1, 1000, 10)
...     x = round((random.random() * 2 - 1) * multiplier, 2)
...     return x
... 
>>> print(set_random_x())
-802.13
>>>
и тут видно, что x никуда не устанавливается, а просто выводится. При этом имя функции говорит, что x куда-то устанавливается. И куда он устанавливается? Никуда. Эта информация притянута из того контекста, где была эта функция сначала. Но тут-то контекст другой уже.

Назови её так
  
get_random_x()
и тогда она подойдёт к сотням других программ с сотней других контекстов, потому что в имени говорится о том, что делается внутри функции.

С новым именем она подходит и к той программе, и к этой
  
>>> import random
>>> 
>>> def get_random_x():
...     ''' Return value of x from a set of real numbers'''
...     multiplier = random.randrange(1, 1000, 10)
...     x = round((random.random() * 2 - 1) * multiplier, 2)
...     return x
... 
>>> print(get_random_x())
-551.85
>>>


Ocean
А вот так понятнее?
  
def calculate_sum(n, x):
	'''Element of given series expresses with formula (2k! +|x|) / (k**2)!
	where:
	x is real
	k is natural and k is defined in the interval 1 <= k <= n
 
	Return nth partial sums of the series '''
Опять табуляции идут. Что-то у тебя там неправильно настроено. Я об этом вот и говорю - твоё копирование вот это с табуляциями происходит с табуляциями потому, что там стоят табуляции. Когда стоят пробелы, все копирования происходят через пробелы, которые и стоят, никаких табуляций ниоткуда не появляется. И вот мы сейчас отвлекаемся на табуляцию, я пишу этот целый абзац про табуляцию вот эту, на это уходит время, естественно, чтобы её убрать и превратить в пробелы, а не обсуждаем сразу твой docstring. И смотри, допустим, я отвечаю тебе десять минут и пять из них уходят на табуляцию, а другие пять из них уходят на docstring, потом их не хватает и я добавляю ещё пять минут, чтобы про docstring дописать инфу - в итоге пятнадцать минут занимает весь ответ. Вот так время и пожирается. Занимаемся выравниванием кода, вместо того, чтобы работать с кодом. Поэтому мы ставим четыре пробела всегда, потому что с ними никогда этих отвлечений не происходит и не надо ничего выравнивать и перевыравнивать. Ты копируешь код - и он копируется как есть. Пробелы во всех редакторах, всех программах, всех движках выглядят одинаково. А табуляция во всех местах выглядит по-разному: где-то она выглядит как четыре пробела, а где-то - как восемь, а где-то ещё как-то. В итоге код съезжает и в разных местах один и тот же вставленный из буфера код выглядит по-разному.

Вот теперь можно про docstring пописать
  
"""Calculate sum of series (2k! + |x|) / (k^2) where x is real, n is natural and k in [1; n]."""
Сначала мы составляем полную docstring, описываем в ней всё, чтобы было всё-всё-всё понятно и догадываться ни до чего не приходилось, а потом мы эту полную и завершённую docstring сокращаем и утрамбовываем, выбрасывая лишние слова. В docstring обязательно должно быть написано, что означает каждый аргумент функции, что возвращается из функции (если из функции не возвращается ничего (то есть функция является процедурой), то это тоже должно быть понятно из docstring) и должен быть описан процесс работы функции - каким образом аргументы преобразуются в возвращаемое значение. При этом всём описание должно быть кратким. За подробностями процесса преобразования, если это нужно для чего-то, человек должен обращаться к коду функции уже.

Если docstring больше восьмидесяти символов (нарушает PEP8), то тогда её в многострочную docstring превращаем. Все строчки должны быть короткими, чтобы потом при просмотре хелпа они не уезжали за край экрана. Есть дураки, которые нарушают PEP8, типа “а что тут такого? это же не обязательно”, но они не в курсе, что это приводит к последствиям, о которых они даже не подозревают потом. Но и их код никто не читает, кроме них самих Поэтому они и сидят годами в розовых очках один на один со своим кодом.

Дальше по имени фунции
Ocean
  
def calculate_sum(n, x):
Что будет, если в программе нужно будет считать ещё две других суммы и использовать потом все эти результаты вычислений друг с другом? Имена нужно давать так, чтобы их не приходилось переименовывать потом из-за изменившихся требований к программе в целом.

Тут заполнил всё
  
>>> import math
>>> 
>>> def calc_sum_2k_absx_k2(n, x):
...     """Calculate sum of series (2k! + |x|) / (k^2) where 1 <= k <= n.
... 
...     n is natural
...     x is real
...     """
...     y = 0
...     for k in range(1, n + 1):
...         y += (math.factorial(2 * k) + abs(x)) / math.factorial(k ** 2)
...     return y
... 
>>> calc_sum_2k_absx_k2(5, 2.5)
5.606157684907805
>>> 
>>> help(calc_sum_2k_absx_k2)
 
>>>
Help on function calc_sum_2k_absx_k2 in module __main__:

calc_sum_2k_absx_k2(n, x)
Calculate sum of series (2k! + |x|) / (k^2) where 1 <= k <= n.

n is natural
x is real
(END)
Через вызов help() мы проверяем, как выглядит docstring, потому что потом при вызове help() для всего модуля, все docstring'и будут собраны из функций модуля и будут образовывать помощь по всему модулю. От информативности docstring'ов будет зависеть понимание всего модуля в целом. Поэтому часто можно запустить help() для какого-нибудь пакета, а писал его какой-то тупой хрен. Хелп есть - а ничего не понятно. Ну, например, описаны какие-то точные типы переменных, но при этом непонятно вообще, что делает функция. Нахрен мне эти типы его? Из-за этого приходится читать документацию, а там 100500 страниц воды всякой, ненужной для работы, приходится сидеть и выуживать крупицы нужной информации, чтобы просто начать что-то делать.



Отредактировано py.user.next (Май 16, 2021 10:58:20)

Офлайн

#8 Май 16, 2021 04:07:46

Ocean
Зарегистрирован: 2021-03-14
Сообщения: 131
Репутация: +  9  -
Профиль   Отправить e-mail  

Будь ласка допоможіть


py.user.next
и тут видно, что x никуда не устанавливается, а просто выводится. При этом имя функции говорит, что x куда-то устанавливается. И куда он устанавливается? Никуда. Эта информация притянута из того контекста, где была эта функция сначала. Но тут-то контекст другой уже.

Назови её так и тогда она подойдёт к сотням других программ с сотней других контекстов, потому что в имени говорится о том, что делается внутри функции.
Да, теперь поняла! Если я буду делать как ты сказал, то я просто готовую функцию импортирую(или скопирую) и все. А если оставлю контекст, то мне надо будет каждый раз ее подтачивать руками, когда вздумаю использовать еще раз. Офигенно! Взяла на заметку.

py.user.next
Опять табуляции идут. Что-то у тебя там неправильно настроено. И вот мы сейчас отвлекаемся на табуляцию, я пишу этот целый абзац про табуляцию вот эту, на это уходит время, естественно, чтобы её убрать и превратить в пробелы, а не обсуждаем сразу твой docstring. И смотри, допустим, я отвечаю тебе десять минут и пять из них уходят на табуляцию, а другие пять из них уходят на docstring, потом их не хватает и я добавляю ещё пять минут, чтобы про docstring дописать инфу - в итоге пятнадцать минут занимает весь ответ. Вот так время и пожирается. Занимаемся выравниванием кода, вместо того, чтобы работать с кодом.
Обещаю, это последний раз. Работаем именно с кодом, а не моими тупняками и настройками блокнота.
Выравнивать код это моя домашка)

py.user.next
Сначала мы составляем полную docstring, описываем в ней всё, чтобы было всё-всё-всё понятно и догадываться ни до чего не приходилось, а потом мы эту полную и завершённую docstring сокращаем и утрамбовываем, выбрасывая лишние слова
Ты очень интересно ужал докстрингу. Получается, что не нужно добавлять что возвращает отдельным предложением, потому что сразу в лоб указано Calculate sum of series. Тут придется тоже попотеть, чтобы мозг переключится на иной стиль мышления. Спасибо за подсказку. Очень ценный пример.


py.user.next
что возвращается из функции (если из функции не возвращается ничего (то есть функция является процедурой), то это тоже должно быть понятно из docstring)
А как это описать правильно для процедуры, что ничего не возвращается при вызове?
Указать, что Return None или как правильно? Я гуглила про это и не нашла ответа или примеров.

py.user.next
Если docstring больше восьмидесяти символов (нарушает PEP8), то тогда её в многострочную docstring превращаем. Все строчки должны быть короткими, чтобы потом при просмотре хелпа они не уезжали за край экрана. Есть дураки, которые нарушают PEP8, типа “а что тут такого? это же не обязательно”
Запомнила. Спасибо большое!

py.user.next
Что будет, если в программе нужно будет считать ещё две других суммы и использовать потом все эти результаты вычислений друг с другом?
О, еще одно большое спасибо. Я поняла! Теперь до меня дошло! Я встречала в рекомендациях и в книгах, но мне не было понятно. Звучало противоречием, а ты прямо по полочкам мне в голове разложил:
- функции, что универсальные, нужно очищать в именах от контекста.
- специфические узкозаточенные функции именовать с четкими ключевыми словами, которые накрепко свяжут имя с контекстом.

py.user.next
Через вызов help() мы проверяем, как выглядит docstring, потому что потом при вызове help() для всего модуля, все docstring'и будут собраны из функций модуля и будут образовывать помощь по всему модулю.
Запомнила, буду всегда проверять.


py.user.next
Хелп есть - а ничего не понятно. Ну, например, описаны какие-то точные типы переменных, но при этом непонятно вообще, что делает функция. Нахрен мне эти типы его? Из-за этого приходится читать документацию, а там 100500 страниц воды всякой, ненужной для работы, приходится сидеть и выуживать крупицы нужной информации, чтобы просто начать что-то делать.
Ты про такое говоришь или это ок?
  
def suggest_places(auth_key, city):
  """Returns longitude and latitude of first suggested location in the Netherlands from Postcode API.
  
  :param auth_key: authorization key for Postcode API
  :type auth_key: str
  :param city: textual input for city names to match in Postcode API
  :type city: str
  
  :rtype: (str, str), str, str
  :return: (longitude, latitude), Postcode API status code, Postcode API error message

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







Офлайн

#9 Май 16, 2021 11:29:30

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Будь ласка допоможіть

Ocean
py.user.next
если из функции не возвращается ничего (то есть функция является процедурой), то это тоже должно быть понятно из docstring
А как это описать правильно для процедуры, что ничего не возвращается при вызове?
Указать, что Return None или как правильно? Я гуглила про это и не нашла ответа или примеров.
Ты просто текст всего комментария переделываешь так, чтобы было ясно, что функция (процедура) ничего не возвращает.
  
>>> def f(n):
...     """Print n numbers to the screen."""
...     print(*range(n))
... 
>>> f(5)
0 1 2 3 4
>>> 
>>> help(f)
 
>>>
f(n)
Print n numbers to the screen.
(END)
Бывает и такое, что функция возвращает и None в качестве значения. Это выглядит так, будто она ничего не вернула. А на самом деле это функция, которая в числе возвращаемых значений может и None вернуть. Тогда это пишется явно - “функция возвращает None тогда-то”, а в теле функции такие None'ы всегда возвращаются через return, а не через окончание работы функции.

Ocean
Я прост видела во многих статьях такого рода примеры многострочных докстрингов.
  
def suggest_places(auth_key, city):
  """Returns longitude and latitude of first suggested location in the Netherlands from Postcode API.
  
  :param auth_key: authorization key for Postcode API
  :type auth_key: str
  :param city: textual input for city names to match in Postcode API
  :type city: str
  
  :rtype: (str, str), str, str
  :return: (longitude, latitude), Postcode API status code, Postcode API error message
Это вообще похоже на автоперевод. Знаешь, бывает так, что проекты переводят с одного языка на другой. Естественно, для большей части кода пишутся трансляторы. Что-то совсем уж сложное переводится руками. И вот эти трансляторы транслируют комментарии напрямую. И комментарии из того языка, где эти типы важны, попадают в язык, где эти типы нафиг не нужны. А автоматом это не переведёшь, так как слишком сложная семантика, чтобы транслятор такой написать можно было. Вот они и переводят напрямую и оставляют так. Оно типа кушать не просит и не нарушает понимание. А тем, что здесь много лишних слов, просто пренебрегают и не тратят время на корректирование.

Вот источник комментариев тебе
https://github.com/python/cpython/tree/main/Lib
Это исходники питона самого, там много модулей на самом питоне. И в этих модулях есть комментарии такие именно, какие в питоне и принято делать. Есть разные комментарии по качеству, конечно, так как кто-то не умеет их писать, но в целом в исходники принимают через code review (то есть минимум два программиста, которым доверяют в сообществе, должны просмотреть код, прежде чем его добавят в исходники питона). Поэтому коду в базе исходников питона в целом можно доверять. Частности там бываеют, конечно, разные. Ты в нескольких разных модулях смотри просто на комментарии и ищи общие черты между ними в их стилях. Так ты научишься писать комментарии.

А вот эту Java'шную херню не надо принимать за пример, так как она тебе просто засрёт мозги и ты будешь очень хорошо знать, как на питоне хорошо писать в Java-стиле, который в питоне нафиг не упал.



Отредактировано py.user.next (Май 16, 2021 11:34:23)

Офлайн

#10 Май 16, 2021 17:25:44

Ocean
Зарегистрирован: 2021-03-14
Сообщения: 131
Репутация: +  9  -
Профиль   Отправить e-mail  

Будь ласка допоможіть

py.user.next
Бывает и такое, что функция возвращает и None в качестве значения. Это выглядит так, будто она ничего не вернула. А на самом деле это функция, которая в числе возвращаемых значений может и None вернуть. Тогда это пишется явно - “функция возвращает None тогда-то”, а в теле функции такие None'ы всегда возвращаются через return, а не через окончание работы функции.
Поняла!
Спасибо большое

py.user.next
Это вообще похоже на автоперевод. Знаешь, бывает так, что проекты переводят с одного языка на другой.
Я не знаю можно ли тут ссылки давать на внешние источники. Если нет, то моментально удалю.
Я во многих местах встречала такие советы, вот, например, Тут. Там про Sphinx очень однозначные фразы написаны: “Sphinx style is the official Python documentation standard” и дальше в тексте, что это вообще единственный способ иметь классную документацию. Думаю, что ты догадался, что я оч впечатлилась, уши развесила, себе записала все и в голову отложила.

py.user.next
Вот источник комментариев тебе
https://github.com/python/cpython/tree/main/Lib
Спасибо! Буду учиться по этим комментариям.

py.user.next
А вот эту Java'шную херню не надо принимать за пример, так как она тебе просто засрёт мозги и ты будешь очень хорошо знать, как на питоне хорошо писать в Java-стиле, который в питоне нафиг не упал.
Поняла и накрепко запомнила. Спасибо огромное.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version