Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 31, 2016 21:11:24

kazenniy
Зарегистрирован: 2015-12-09
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Библиотека ATA Pass-Through для pyhton3 под linux.

Rodegast
В третьем функция отработала, но она мне всё равно не нравится.
Предложете замену?

Rodegast
Там только 1 подусловие, по этому его можно заменить на 2 словаря.
Подусловий там много, но уровень вложенности один. Атрибут может менять значение в зависимости от типа накопителя. Покажете пример, как это сделать со словарями? Есть сомнение, что получится компактнее.

Офлайн

#2 Окт. 31, 2016 21:27:33

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Библиотека ATA Pass-Through для pyhton3 под linux.

kazenniy
Покажете пример, как это сделать со словарями?
Например
 {(206, True): "Unknown_SSD_Attribute",
 (206, False): "Flying_Height",
 (207, True): "Unknown_SSD_Attribute",
 (207, False): "Spin_High_Current"}[(id_, self.ssd)]

Офлайн

#3 Окт. 31, 2016 21:30:44

kazenniy
Зарегистрирован: 2015-12-09
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Библиотека ATA Pass-Through для pyhton3 под linux.

А если атрибут имеет одно значение при любом типе диска, его обязательно тоже дважды прописывать или можно как-то сократить?

Офлайн

#4 Окт. 31, 2016 21:36:43

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Библиотека ATA Pass-Through для pyhton3 под linux.

kazenniy
А если атрибут имеет одно значение при любом типе диска, его обязательно тоже дважды прописывать или можно как-то сократить?
Можно сокращать, можно не сокращать. Комбинировать условия со словарями никто не возбраняет, а большой словарь будет ещё и быстрее большого блока альтернатив.

Офлайн

#5 Окт. 31, 2016 21:44:17

kazenniy
Зарегистрирован: 2015-12-09
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Библиотека ATA Pass-Through для pyhton3 под linux.

Попробую перевести самый большой блок в словари и сравню размеры.

Офлайн

#6 Окт. 31, 2016 22:07:00

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

Библиотека ATA Pass-Through для pyhton3 под linux.

> Подусловий там много, но уровень вложенности один.

Никаких подусловий кроме self.ssd я не увидел.

> Покажете пример, как это сделать со словарями?

 if self.ssd:
     return {1:"Raw_Read_Error_Rate", 2:"Throughput_Performance", 6:"Unknown_SSD_Attribute"}.get(Id, "Unknown_Attribute")
else:
     return {1:"Raw_Read_Error_Rate", 2:"Throughput_Performance", 6:"Read_Channel_Margin"}.get(Id, "Unknown_Attribute")



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

Отредактировано Rodegast (Окт. 31, 2016 22:08:49)

Офлайн

#7 Ноя. 1, 2016 11:00:49

kazenniy
Зарегистрирован: 2015-12-09
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Библиотека ATA Pass-Through для pyhton3 под linux.

Да, в таком виде код выглядит намного опрятнее. Перепишу все таким образом.
Вот бы еще перевети в подобную форму такие сравнения:

        if cap & 0x800:
self.sataGen = "Gen.3 (6.0Gb/s)"
elif cap & 0x400:
self.sataGen = "Gen.2 (3.0Gb/s)"
elif cap & 0x200:
self.sataGen = "Gen.1 (1.5Gb/s)"
else:
self.sataGen = ""
Причем если поддерживается Gen.3 то значение cap будет 0xE00

Офлайн

#8 Ноя. 1, 2016 12:09:18

kazenniy
Зарегистрирован: 2015-12-09
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Библиотека ATA Pass-Through для pyhton3 под linux.

Разобрался, как можно сделать. Обновил код на гитхабе. Огромное спасибо за наводку!
Попутно узнал, что ключем словаря может быть даже условие, ведь оно будет вычисляться на момент создания словаря.

def get_temp_description(temp):
return {
temp < -20: 'Холодно',
-20 <= temp < 0: 'Прохладно',
0 <= temp < 15: 'Зябко',
15 <= temp < 25: 'Тепло',
25 <= temp: 'Жарко'
}[True]

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version