如何重新定义变量



我正在尝试获取我的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)

相关内容

  • 没有找到相关文章

最新更新