Я пытаюсь изучить Python и немного запутался в скрипте, с которым я играю. Я использую Python для запуска scapy. Существуют некоторые условные утверждения, которые проверяют определенные значения. Моя путаница сосредоточена на проверке значений. Надеюсь, что я правильно использую атрибуты и методы. Я все еще пытаюсь понять встроенные функции против того, что включено в scapy. Я использую Powershell в основном в течение последних нескольких лет, поэтому его трудно переключать передачи :)Понимание атрибутов и методов Python
tcp_connect_scan_resp = sr1(IP(dst=dst_ip)/TCP(sport=src_port,dport=dst_port,flags="S"),timeout=10)
if(str(type(tcp_connect_scan_resp))=="<type 'NoneType'>"):
Print "Closed"
elif(tcp_connect_scan_resp.haslayer(TCP)):
if(tcp_connect_scan_resp.getlayer(TCP).flags == 0x12):
Первый условный оператор, как представляется, проверьте атрибут «тип». Почему в этом случае они будут использовать функции Python, встроенные в функции str()
и type()
? Если я просто использую type()
, он вытаскивает то же значение.
Для второго и третьего условных операторов, похоже, используются методы, встроенные в scapy. Какова логика включения скобок() во внешние выражения? Опять же, если я запускаю их вручную, я получаю правильное значение.
Ответы на все ваши вопросы, к сожалению, состоят в том, что это чрезвычайно унииоматический и непифонический код. Я не могу представить, почему кто-нибудь напишет это. –
Кстати, вы имеете в виду «scapy» или «scrapy»? – Jon
Подумайте о том, чтобы разместить свой код на http://codereview.stackexchange.com/ для получения полной информации о питоническом стиле. – Jon