Я пытался отладить причину сбоя одного из моих pytests, и я использовал точку останова python3.7 () в моем pytest.У меня есть следующий код:
(Pdb) train_df
Acquisition_personal_win_amount ... yrs_since_earliest_degree
0 -5 ... -5
1 -5 ... -5
2 -5 ... -5
3 -5 ... -5
4 -5 ... -5
5 -5 ... -5
6 -5 ... -5
[7 rows x 488 columns]
(Pdb) len(train_df.columns.values)
488
(Pdb) train_df = train_df.assign(**{feat_name: -1 for feat_name in allowed_col_names if feat_name not in train_df.columns.values})
*** NameError: name 'train_df' is not defined
Обратите внимание, что train_df
фактически определено!Есть ли какой-то нюанс с использованием списочных представлений, который мешает pdb обнаружить, что train_df существует?Или, может быть, проблема с исправлением некоторых переменных в pytest?
Та же самая проблема возникает, когда я пытаюсь использовать train_df.columns.values
(Pdb) len(train_df.columns.values)
488
(Pdb) train_df = train_df.assign(**{feat_name: -1 for feat_name in allowed_col_names if feat_name not in train_df.columns.values})
*** NameError: name 'train_df' is not defined
(Pdb) train_df = train_df.assign(**{feat_name: -1 for feat_name in allowed_col_names if feat_name not in [1,2,3]})
(Pdb)
Обратите внимание, как переключение на простой массив [1,2,3]
не даетвопросы!