Несогласованное поведение между функцией Python и отладчиком VS Code для поиска области.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Несогласованное поведение между функцией Python и отладчиком VS Code для поиска области.

Сообщение Anonymous »

Для следующего кода (пересмотренного):

Код: Выделить всё

# infile.py

FILE1 = 'file1'
FILE2 = 'file2'

def getfile():
# Note:  I am doing the equivalent of this with VS Code debugger:
# breakpoint()
file = FILE1 if 'FILE1' in locals() else FILE2
print(f'{file=}')

if __name__ == '__main__':
getfile()
Если я запущу это в Windows (используя Python 3.12.7 или Python 3.13.0), вот что я увижу:

Код: Выделить всё

PS> .\infile.py
file='file2'
Если я запущу это в своем отладчике VS Code (v1.95.3, Python v2024.20.0, Pylance v2024.12.1, Python Debugger v2024.12.0), вот что я увижу:

Код: Выделить всё

# Uncomment breakpoint at first line in above def getfile function
# Start VS Code in debugging mode (F5)
# VS Code stops at breakpoint
# From VS Code Debug Console, execute following:
file = FILE1 if 'FILE1' in locals() else FILE2

print(f'{file=})

# Output:
file='file1'
Я ожидал увидеть результат, показанный в отладчике VS Code выше. Похоже, я что-то не совсем понимаю в области видимости Python. Что мне не хватает?
Мне также любопытно, почему я вижу разницу между тем, что делает Python, и тем, что показывает отладчик VS Code Python. Я делаю что-то не так или это ошибка?
Исправлено:
Если я сделаю это с помощью pdb, я увижу следующее:

Код: Выделить всё

PS> .\infile
> ...\infile.py(9)getfile()
-> breakpoint()
(Pdb) l
4     FILE1 = 'file1'
5     FILE2 = 'file2'
6
7
8     def getfile():
9  ->     breakpoint()
10         file = FILE1 if 'FILE1' in locals() else FILE2
11         # file = FILE1 if 'FILE1' in globals() else FILE2
12         print(f'{file=}')
13
14
(Pdb) 'FILE1' in locals()
False
(Pdb) 'FILE1' in globals()
True
(Pdb)
Итак, я думаю, что на самом деле мне нужно использовать globals(), верно?


Подробнее здесь: https://stackoverflow.com/questions/792 ... -scope-loo
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Несогласованное поведение между функцией Python и отладчиком VS Code для поиска области.
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Несогласованное поведение между функцией Python и отладчиком VS Code для поиска области.
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Определение того, запускается ли код Python под Visual Studio Code (или другим) отладчиком Python
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • VS Code / Python / Debugging Pytest Test с отладчиком
    Anonymous » » в форуме Python
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • VS Code / Python / Debugging Pytest Test с отладчиком
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»