我正在尝试获取我的IP并创建一个变量来保存它。
ipAddr = "F"
def ip():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ipAddr = s.getsockname()[0]
s.close()
ip()
print(ipAddr)
#Returns F
当我在运行ip()后打印ipAddr时,我希望它返回我的ip。我知道 ip() 中的代码有效,当我在 def 块中打印 ipAddr 时,它会打印我的 ip
如果不使用 global
关键字,则无法修改函数中的全局变量,因此请将其添加到:
ipAddr = "F"
def ip():
global ipAddr
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ipAddr = s.getsockname()[0]
s.close()
ip()
print(ipAddr)
但是,这通常是不好的做法。最好这样做:
ipAddr = "F"
def ip():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ipAddr = s.getsockname()[0]
s.close()
return ipAddr
ipAddr = ip()
print(ipAddr)
使用 return
语句。
ipAddr = "F"
def ip():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ipAddr = s.getsockname()[0]
s.close()
return ipAddr
# You can assign the return value to any variable name:
# ipAddr here and ipAddr in the function are different variables
ipAddr = ip()
print(ipAddr)