首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UnboundLocalError (赋值前引用的局部变量)

UnboundLocalError (赋值前引用的局部变量)
EN

Stack Overflow用户
提问于 2019-04-11 14:05:55
回答 2查看 1.1K关注 0票数 0

我试图在这个部分中,脚本搜索一个跟踪号并打印.txt文档的内容。当我使用此部分时会出现以下错误:

代码语言:javascript
复制
def lookup_trackingnum():
    logger.info('lookup_trackingnum started - B3                    ')
    print(' ')
    print(' ')
    print(' = = Look Up a Tracking Number = =  ')
    print(' ')
    print(' ')
    lookup_in = input('Tracking Number: ')
    try:
        lookup_path = 'lms19-files/exports/' + lookup_in + '.txt'
        logger.debug('lookup_path created - B3   -   BUG RESOLVING      ')
        with open(lookup_path, 'r') as lookup:
            logger.debug('lookup_path opened - B3   -   BUG RESOLVING       ')
            print(lookup.read())
            logger.debug('lookup_path printed - B3   -   BUG RESOLVING      ')
    except:
        print('ERROR: The Tracking Number ' + lookup_in + ' doesn\'t exist.')
        logger.error('Tracking Number doesn\'t exist - B2                ')
        print(' ')
        print(' ')
        print(' [E] Return to Dashboard  ')
        print(' ')
        logger.debug('Before lookupnav_in input - B3   -   BUG RESOLVING')
        lookupnav_in = input('Input: ')
        logger.debug('After lookupnav_in input - B3   -   BUG RESOLVING ')
    if lookupnav_in == 'E':
        logger.debug('If lookupnav_in - B3   -   BUG RESOLVING          ')
        startmenu()
        logger.debug('startmenu triggered - B3   -   BUG RESOLVING      ')
    else:
        print(lookupnav_in + ' isn\'t a valid input.')
        logger.error('Invalid Input - B3                                ')
        startmenu()

错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/Users/User/PycharmProjects/lms19/lms19-beta.py", line 417, in <module>
    startmenu()
  File "/Users/User/PycharmProjects/lms19/lms19-beta.py", line 280, in startmenu
    lookup_trackingnum()
  File "/Users/User/PycharmProjects/lms19/lms19-beta.py", line 253, in lookup_trackingnum
    if lookupnav_in == 'E':
UnboundLocalError: local variable 'lookupnav_in' referenced before assignment

和日志数据:

代码语言:javascript
复制
lms19 : INFO - Logger Started - B6                                 [2019/04/11 15:20:11]
lms19 : CRITICAL - Setup skipped - B6                              [2019/04/11 15:20:11]
lms19 : INFO - Software Initialised - B6                           [2019/04/11 15:20:11]
lms19 : INFO - Main Script started - B7                            [2019/04/11 15:20:11]
lms19 : INFO - startmenu started - B4                              [2019/04/11 15:20:11]
lms19 : INFO - lookup_trackingnum started - B3                     [2019/04/11 15:20:13]
lms19 : DEBUG - lookup_path created - B3   -   BUG RESOLVING       [2019/04/11 15:20:15]
lms19 : DEBUG - lookup_path opened - B3   -   BUG RESOLVING        [2019/04/11 15:20:15]
lms19 : DEBUG - lookup_path printed - B3   -   BUG RESOLVING       [2019/04/11 15:20:15]

我尝试了很多我在网上(和在StackExchange上)找到的东西,但是我无法让它发挥作用。

谢谢你,保罗

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-11 14:09:03

代码语言:javascript
复制
lookupnav_in = input('Input: ')

这就是定义变量的地方。它在try语句的except块中。

代码语言:javascript
复制
if lookupnav_in == 'E':

这是您首先使用变量的地方。这就在外边的外边。

除非实际发生异常,否则不会执行not块。

因此,想想如果try从未抛出异常会发生什么情况。

变量从未定义过。因此出现了错误。

票数 0
EN

Stack Overflow用户

发布于 2019-04-11 14:09:52

我认为这是因为变量lookupnav_in是在the块中声明的,然后在the块之外使用if-语句进行检查。在未触发gets块的情况下,变量永远不会被声明。这意味着,在使用if-语句检查它之前,您必须在特定的the块之外的其他地方声明它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55634466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档