如何重新定义变量

时间:2019-01-03 01:35:15

标签: python global-variables

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

2 个答案:

答案 0 :(得分:1)

不使用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)

答案 1 :(得分:0)

使用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)