Проверка функций на булево значение
Подскажите правильно ли я понял данные строки кода:
def checkbuy(investment):
if not pos_dict['in_position']:
if df.Buy.values:
return True
else:
print('already in a position')
Данная функция первым действием проверяет словарь на отсутствие строки in_position, если ее нет, выполняется проверка фрэйма данных(ячейки в таблице) на наличие там True и если оно там есть, функция возвращает True. Если есть хотя бы словарь, он печатает уже на позиции. То есть по сути эта запись, эквивалентна вот этой, более понятной по смыслу для новичка.
def checkbuy(investment):
if not pos_dict['in_position'] = True:
if df.Buy.values = True:
return True
else:
print('already in a position')
Если я не прав, объясните подробно, кому не лень.
Ответы (1 шт):
Нет, это будет эквивалентно коду:
def checkbuy(investment):
if not bool(pos_dict['in_position']):
if bool(df.Buy.values):
return True
else:
print('already in a position')
А далее нужно знать, что при приведении значений к типу bool действуют такие правила:
| Тип | Значение | bool |
|---|---|---|
bool |
TrueFalse |
без изменения |
int,float |
0не 0 |
FalseTrue |
str |
пустая строка ""любая другая |
FalseTrue |
| коллекция | пустая не пустая |
FalseTrue |
NoneType |
None |
False |
Судя по названию, в поле df.Buy.values лежит какая-то коллекция и тут, соответственно, проверяется, что она не пустая и не None.