Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数返回变量的第一次初始化,而不是被覆盖的变量_Python_Function - Fatal编程技术网

Python 函数返回变量的第一次初始化,而不是被覆盖的变量

Python 函数返回变量的第一次初始化,而不是被覆盖的变量,python,function,Python,Function,当我运行它时返回错误,我希望用户输入主机和端口,但是如果用户在端口号中输入文本(字母),它应该回调函数er(),它确实回调,但即使在我输入正确的端口号后返回错误。因为我很无聊,所以我让它为您工作 def hand(): print("Wrong port format") er() def er(): try: host=input("Host: ") serverPort=(input("Port: "))

当我运行它时返回错误,我希望用户输入主机和端口,但是如果用户在端口号中输入文本(字母),它应该回调函数er(),它确实回调,但即使在我输入正确的端口号后返回错误。

因为我很无聊,所以我让它为您工作

def hand():
    print("Wrong port format")
    er()

def er():
    try:
            host=input("Host: ")
            serverPort=(input("Port: "))
            try:
                Port=int(serverPort) 
            except Exception:
                hand()
            return (host,int(serverPort))
    except Exception:
            return("Wrong")

serverPorti=er()

print((serverPorti))

摆脱try/except并查看回溯。如果你不明白,把它贴在你的问题上。你的毯子正在隐藏我们所有人的详细信息。@roganjosh我去掉了它,变量host和severPort的值仍然与我第一次输入的值相同,而不是重新调用函数后的值,因此serverPort仍然具有我第一次输入的文本值。编辑并使其工作,请记住python版本低于3使用原始输入而不是输入,我还要注意,您的问题与套接字编程本身无关;)那真是太好了,谢谢你!,是的,你是对的,我正在编程一个服务器客户端套接字,这样我的badas你可以看到一个while循环更好地从终端获取正确的用户输入。是的,谢谢,我更改了标题,希望它更适合这个问题
def getHostPort():
    host = ''
    serverPort = ''
    inputCorrect = False

    while not inputCorrect:
        try:
            host = input("Host: ")
            serverPort = int(input("Port: "))
            inputCorrect = True
        except Exception:
            print("wrong port")
            continue

    return (host,int(serverPort))

serverPorti=getHostPort()
print((serverPorti))