Ваша область действия неверна, функция определена внутри какой-то другой функции, поэтому она доступна только локально:
def f1():
pass
def f2():
def f3():
pass
f3() # works, local scope visible
f1() # works
f2() # works
try:
f3() # does not work, is not known, only inde f2()'s scope known
except NameError as ne:
print(ne)
Выход:
name 'f3' is not defined
Чтобы исправить вашу структуру, заставьте IP_HEADER(Source_IP, Destination_IP):
вернуть построенное IP_PACKET
, сохранить его в переменной и предоставить Send_PACKET(IFACE,data)
- также не имеет отступа Send_PACKET(...)
:
def IP_HEADER(Source_IP, Destination_IP):
# your code
return IP_PACKET
def Send_PACKET(IFACE,data): # unindent 4 spaces so its in normal scope
# your code, use data instead of IP_PACKET
data = IP_HEADER(sys.argv[1], sys.argv[2])
Send_PACKET(sys.argv[3], data)