Область видимости переменных в Python

filename = "Example.txt"
with open(filename, "r+") as file_object:
    for line in file_object:
        line = line.split()
        if line[1][0].isdigit():
            intf,vlan,*rest = line
        print(intf,vlan)

В данном случае будет ошибка что переменные intf, vlan не определены, но если написать так

filename = "Example.txt"
with open(filename, "r+") as file_object:
    for line in file_object:
        line = line.split()
        if line[1][0].isdigit():
            intf,vlan,*rest = line
            print(intf,vlan)

то ошибки не будет. Почему так? Разве переменные intf, vlan не видны в цикле for? Их область действия ведь больше чем у if. Эти переменные видны в любой области, кроме for. Я читал книги, но именно тут, я логику не ловлю.


Ответы (1 шт):

Автор решения: Victor VosMottor
filename = "Example.txt"
with open(filename, "r+") as file_object:
    for line in file_object:
        line = line.split()
        if line[1][0].isdigit():
            intf,vlan,*rest = line
        print(intf,vlan)

Если не выполнится условие if line[1][0].isdigit():, то переменные не будут созданы. Либо выводите их на экран в условии, либо можно так:

filename = "Example.txt"
with open(filename, "r+") as file_object:
    for line in file_object:
        line = line.split()
        intf = vlan = None
        if line[1][0].isdigit():
            intf,vlan,*rest = line
        print(intf,vlan)
→ Ссылка