Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 27, 2018 17:17:14

druidich92
Зарегистрирован: 2016-03-05
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Как упросить функцию ?

добрый день. Пишу приложуху, и на сегодняшний день получилась такая функция

 def paraphine_full_distribution(self):
        '''
        распределение всего состава по 3 группам: нормальные парафины, изопарафины и водород
        учитываются все компоненты
        :param data: входные данные
        :type data: calculate_file
        '''
        izo_paraphine_data = [[], []]
        norm_paraphine_data = [[], []]
        h2_data = [
            [x for x in np.linspace(-300, -250, 6)],  [random.randint(0, 30) for x in range(0, 6)]]
        h2_data[1][2] = 100
        for i, item in enumerate(self.full_components):
            if item in self._criterion_norm_paraphine:
                norm_paraphine_data[0].append(item)
                norm_paraphine_data[1].append(
                    self.full_composition[self.level_composition][i])
            elif item in self._criterion_izo_paraphine:
                izo_paraphine_data[0].append(item)
                izo_paraphine_data[1].append(
                    self.full_composition[self.level_composition][i])
        return {'x': np.array(izo_paraphine_data[0]), 'y': np.array(izo_paraphine_data[1])},{'x': np.array(norm_paraphine_data[0]), 'y': np.array(norm_paraphine_data[1])},{'x': np.array(h2_data[0]), 'y': np.array(h2_data[1])}
т.е. я беру состав и разбиваю его на 3 группы и возвращаю группы.
можете подсказать, как этот код можно сделать более читаемый?

Офлайн

#2 Апрель 27, 2018 18:26:22

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как упросить функцию ?

Форматирование сделать. Не плохо помогает для этого flake8. Это конечно при условии что вы изучили рекомендации в PEP8.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Апрель 27, 2018 18:51:59

druidich92
Зарегистрирован: 2016-03-05
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Как упросить функцию ?

JOHN_16
Форматирование сделать. Не плохо помогает для этого flake8. Это конечно при условии что вы изучили рекомендации в PEP8.
а этим занимается vscode.
я прошу помощи, так как длина строк получается больше 79 символов

Офлайн

#4 Апрель 27, 2018 22:31:39

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Как упросить функцию ?

 >>> d ={
	1:2,
	2:3,
	3:4,
	}
>>> d
{1: 2, 2: 3, 3: 4}
>>> 

Офлайн

#5 Апрель 27, 2018 22:43:23

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как упросить функцию ?

druidich92
а этим занимается vscode.
ну судя по всему либо вы просто в тупую игнорируете, либо не умете им пользоваться - там же куча красным помечено!
Я приложил файл, что бы форматирование не ушло. Лучше? Если надо еще улучить - то уже правкой кода.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Прикреплённый файлы:
attachment ttt.py (1,6 KБ)

Офлайн

#6 Апрель 28, 2018 10:59:53

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2832
Репутация: +  186  -
Профиль   Отправить e-mail  

Как упросить функцию ?

1) У тебя не функция, а метод.
2) Документация не соответствует действительности
3) Давай переменным короткие имена
4) Для отступов используй табуляцию
5) Используй переносы в словарях и списках
6) Изменяемое состояние это зло. Не надо его так агрессивно использовать! В место списков izo_paraphine_data и norm_paraphine_data создай 4 списка и нормально заполняй их не пользуясь индексами.

P.S. PEP8 это анахронизм не используй его.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Апрель 28, 2018 11:00:40)

Офлайн

#7 Апрель 28, 2018 16:53:32

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как упросить функцию ?

Rodegast
4) Для отступов используй табуляцию
т.е. не 4 пробела, а именно символ код табуляции \t ?
Rodegast
3) Давай переменным короткие имена
a, b, c наше все? Или как? Что ты советуешь?

druidich92
Rodegast
PEP8 это анахронизм не используй его.
вот с таким советом поаккуратнее. он не совсем корректен. В PEP8 есть некоторые устаревшие вещи, но не весь он сам.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Апрель 28, 2018 18:33:30

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2832
Репутация: +  186  -
Профиль   Отправить e-mail  

Как упросить функцию ?

> т.е. не 4 пробела, а именно символ код табуляции \t ?

Да. Табуляцией намного удобнее делать отступы.
1) Проще набирать.
2) Не надо считать пробелы.
3) Отступы лучше визуализированны. По этому ошибиться в их количестве практически не возможно.

> a, b, c наше все? Или как? Что ты советуешь?

Короткое имя не обязательно должно быть не осмысленным.

> В PEP8 есть некоторые устаревшие вещи, но не весь он сам.

PEP8 писан для узкого круга лиц, но им пользуются все кто попало, в этом смысле, да он актуален. Но это ещё не означает что его надо использовать.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#9 Апрель 28, 2018 22:10:33

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как упросить функцию ?

Rodegast
Да. Табуляцией намного удобнее делать отступы.
1) Проще набирать.
2) Не надо считать пробелы.
3) Отступы лучше визуализированны. По этому ошибиться в их количестве практически не возможно.
а ты в блокноте пишешь код? Любое адекватный редактор программного кода и IDE по нажатию на Tab делает заданный отступ. В каком таком случае ты вынужден будешь считать пробелы что бы это стало поводом переходить на табуляцию?



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#10 Апрель 28, 2018 22:38:56

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2832
Репутация: +  186  -
Профиль   Отправить e-mail  

Как упросить функцию ?

> Любое адекватный редактор программного кода и IDE по нажатию на Tab делает заданный отступ. В каком таком случае ты вынужден будешь считать пробелы что бы это стало поводом переходить на табуляцию?

1) Не любой. Вот я сейчас попробовал это проделать в Geany, по нажатию на Tab он как и положено ставит табуляцию в итоге пробелы и табуляция смешивается что не допустимо.
2) Я могу по ssh подключатся на удалённый сервер и что-то по мелочи править. Будет ли там установлен “адекватный редактор”?
3) На табуляцию я не переходил. Я ей постоянно пользовался.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version