python - 在函数中引用全局变量的问题

标签 python error-handling

这是我昨天在这里问到的一个问题(What is the best way to validate user input against the contents of a list?)。使用这样的函数,我得到了一个很好的建议:

getuser = input("Please enter your username :")

print("1. render_device")
print("2. audit_device")

askuser = input("Would you like to render_device or audit_device? : ")

def verify_input(sites_set):

    get_site_name = input("Please enter the site name you'd like to render :")

    if get_site_name in sites_set:
        print('Proceed')
        return
    else:
        print('Not in either list, please enter a valid site')
        verify_input(sites_set)

if askuser == "1":

        sites_2017 = ["bob", "joe", "charlie"]
        sites_2018 = ["sarah", "kelly", "christine"]

        verify_input(set(sites_2017 + sites_2018))

在函数内以及调用它时,它可以正常工作。但是,问题是我需要get_site_name作为全局变量,因为其输入稍后会在脚本中引用(而不是在函数中)。当我将get_site_name设置为全局时,该函数可以引用它,并且在输入有效站点时可以正常工作,但是当输入无效站点时,它只会不断重复循环"Not in either list"错误,这可能是因为raw_input变量中的get_site_name不是在本地定义。

解决这个问题的最佳方法是什么?

最佳答案

关于什么:

def verify_input(sites_set):

    while get_site_name not in sites_set:
        get_site_name = input("Please enter the site name you'd like to render :")

    print('Proceed')
    return

关于python - 在函数中引用全局变量的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51970506/

相关文章:

编写类时出现Python错误?

python - 次线性 TF 变换导致 sklearn 中的 ValueError

excel - 如何在 MS Access 中为 Excel 电子表格导入提供错误处理

rest - HttpClient 4.1.x - 处理正文内容的协议(protocol)错误

node.js - Node.js更新文档失败时,最好抛出异常或返回信息吗?

python - 如何使用正则表达式在 python 字符串中找到 str.format 的所有占位符?

Python - PIL - 丢失图像

python - Django 查询格式化日期时间输出

magento - magento中没有文件上传错误

node.js - 我应该将自定义错误放在 sails.js 中的哪里?