nameError:全局名称page_title undefined

时间:2013-02-06 16:53:18

标签: python nameerror

我查看了许多现有的名称错误和未定义的变量帖子,遗憾的是无法解决我的问题。我对编程比较陌生,尤其是Python。

我有一个在informcast_data.py中定义的字典词典:

allLinks = {'Send or Edit Messages': {'link':'/InformaCast/admin?cmd=listMessages',   'page_title': 'Messages: Send or Edit Messages'}

我正在将informacast_data.py导入users.py:

from informacast.informacast_data import ICData

然后我有一个函数verify_links,其中包含以下语句:

for href_link in hrefs:
    if href_link.find(ICData.allLinks['page_title']['link'])!=-1:
        self.logger.debug("verify_links found=True for " + str(href_link))
        found=True

如果我在page_title周围留下引号,我得到一个keyError,并且我被告知要删除引号,因为它是一个变量而不是字符串,当我删除引号时我得到nameError,我不知道如何继续。

下面是完整的追溯:

Traceback (most recent call last):
  File "C:\Users\jesse.sole\Jesse_Workspace\trunk\src\informacast\tests\users.py", line 17, in test_appadmin_role
    self.verify_role("appAdmin")
  File "C:\Users\jesse.sole\Jesse_Workspace\trunk\src\informacast\tests\users.py", line 78, in verify_role
    self.verify_links(sel, roleName)
  File "C:\Users\jesse.sole\Jesse_Workspace\trunk\src\informacast\tests\users.py", line 104, in verify_links
    if href_link.find(ICData.allLinks[page_title]['link'])!=-1:
NameError: global name 'page_title' is not defined

提前感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

allLinks是嵌套字典。顶级没有page_title键,这就是你得到一个关键错误的原因:

>>> allLinks = {'Send or Edit Messages': {'link':'/InformaCast/admin?cmd=listMessages',   'page_title': 'Messages: Send or Edit Messages'}}
>>> allLinks['page_title']                                                                                                      
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'page_title'

嵌套词典中的这样一个键,但是:

>>> allLinks['Send or Edit Messages']['page_title']
'Messages: Send or Edit Messages'

认为您要定义一个值为page_title的变量'Send or Edit Messages'

>>> page_title = 'Send or Edit Messages'
>>> allLinks[page_title]['link']
'/InformaCast/admin?cmd=listMessages'

如果你遍历allLinks中可行的键:

for href_link in hrefs:
    for page_title in ICData.allLinks:
        if href_link.find(ICData.allLinks[page_title]['link'])!=-1:
            self.logger.debug("verify_links found=True for " + str(href_link))
            found=True