Область видимости переменных в 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)