首页 > 解决方案 > 为什么输出是“p未定义”?

问题描述

import socket              # Import socket module

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)         # Create a 
socket object

host = socket.gethostbyname("www.itsecgames.com")

global port

for port in range(0,1):
    try :
        connect = s.connect((host,port))
        print("Port [",port,"] : Connection accepted.")
        global p 
        p = port
    except :
        print("Port [",port,"] : Connection refused.")
w = p

print(w)

我有:

w = p
NameError: name 'p' is not defined

标签: python-3.x

解决方案


该问题只能connectthrows时重现。

那是因为,在这种情况下,您从未设置p. 由于您从未设置p,并且在您这样做之前它不存在于全局范围内,因此w = p是无效的。

考虑给它一些初始值,或者跳过整个w事情,除非建立了连接。

具体来说,在这种情况下,您的connect调用引发的原因是您试图连接到端口 0 上的网站。HTTP 网页通常可通过端口 80 访问。


推荐阅读