相关疑难解决方法(0)

在python中赋值错误之前引用

在Python中我收到以下错误:

UnboundLocalError: local variable 'total' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

在文件的开头(在出现错误的函数之前),我使用global关键字声明'total'.然后,在程序的主体中,在调用使用'total'的函数之前,我将它指定为0.我已经尝试在各个地方将它设置为0(包括文件的顶部,就在它被声明之后) ),但我不能让它工作.有谁看到我做错了什么?

python

62
推荐指数
2
解决办法
15万
查看次数

TypeError:'str'对象不可调用(Python)

码:

import urllib2 as u
import os as o
inn = 'dword.txt'
w = open(inn)
z = w.readline()
b = w.readline()
c = w.readline()
x = w.readline()
m = w.readline()
def Dict(Let, Mod):
    global str
    inn = 'dword.txt'
    den = 'definitions.txt'

    print 'reading definitions...'

    dell =open(den, 'w')

    print 'getting source code...'
    f = u.urlopen('http://dictionary.reference.com/browse/' + Let)
    a = f.read(800)

    print 'writing source code to file...'
    f = open("dic1.txt", "w")
    f.write(a)
    f.close()

    j = open('defs.txt', 'w')

    print 'finding definition is source …
Run Code Online (Sandbox Code Playgroud)

python

59
推荐指数
10
解决办法
48万
查看次数

Python范围

我想弄清楚这个:

c = 1
def f(n):
    print c + n 
def g(n):
    c = c + n

f(1) # => 2
g(1) # => UnboundLocalError: local variable 'c' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

谢谢!

python scope

41
推荐指数
3
解决办法
2万
查看次数

在Python中赋值之前引用的局部变量?

我正在使用PyQt库获取网页的屏幕截图,然后阅读不同URL的CSV文件.我保留一个变量Feed,每次处理URL时都会增加,因此应该增加到URL的数量.

这是代码:

webpage = QWebPage()
fo = open("C:/Users/Romi/Desktop/result1.txt", "w")
feed = 0
def onLoadFinished(result):
    #fo.write( column1[feed])#, column2[feed], urls[feed])
   #feed = 0
   if not result:
        print "Request failed"
    fo.write(column1[feed])
    fo.write(',')
    fo.write(column2[feed])
    fo.write(',')
    #fo.write(urls[feed])
    fo.write(',')
    fo.write('404,image not created\n')
    feed = feed + 1
        sys.exit(1)
        save_page(webpage, outputs.pop(0))   # pop output name from list and save
   if urls:
        url = urls.pop(0)   # pop next url to fetch from list
        webpage.mainFrame().load(QUrl(url))
    fo.write(column1[feed])#,column2[feed],urls[feed],'200','image created','/n')
    fo.write(',')
    fo.write(column2[feed])
    fo.write(',')
    #fo.write(urls[feed])
    fo.write(',')
    fo.write('200,image created\n')
    feed = feed + 1 …
Run Code Online (Sandbox Code Playgroud)

python variable-assignment python-2.7 python-3.x

37
推荐指数
3
解决办法
21万
查看次数

UnboundLocalError:从文件读取时在赋值之前引用的局部变量

我也试过寻找答案,但我不明白其他人类似问题的答案......

tfile= open("/home/path/to/file",'r') 

def temp_sky(lreq, breq):
    for line in tfile:
        data = line.split()
        if (    abs(float(data[0]) - lreq) <= 0.1 
            and abs(float(data[1]) - breq) <= 0.1):            
            T= data[2]
    return T
print temp_sky(60, 60)
print temp_sky(10, -10)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

7.37052488
Traceback (most recent call last):
File "tsky.py", line 25, in <module>
  print temp_sky(10, -10)
File "tsky.py", line 22, in temp_sky
  return T
UnboundLocalError: local variable 'T' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

第一个print语句正常工作,但第二个不起作用.我尝试将T设为全局变量,但这使得两个答案都相同!请帮忙!

python

34
推荐指数
3
解决办法
15万
查看次数

Python中的本地函数

在下面的Python代码中,我得到了一个UnboundLocalError.据我所知,局部函数共享包含函数的局部变量,但这似乎不是这里的情况.我认识到a在这种情况下这是一个不可变的值,但这应该不是问题.

def outer():
    a = 0
    def inner():
        a += 1
    inner()
outer()
Run Code Online (Sandbox Code Playgroud)

看起来内部函数已经收到了父函数中所有引用的副本,因为UnboundLocalError如果值的值a被包装在一个可变类型中,我就不会得到异常.

有人能够澄清这里的行为,并指出相应的Python文档吗?

python binding model function local

33
推荐指数
3
解决办法
3万
查看次数

“无法访问未与值关联的局部变量‘a’”,但该值已定义

我不知道为什么当a位于def test()它时找不到并给出错误

UnboundLocalError:无法访问未与值关联的局部变量“a”

代码

import keyboard
import time

a = 0

def test():
    a+= 1
    print("The number is now ", a)
    time.sleep(1)

while keyboard.is_pressed('i') == False:

    test()

Run Code Online (Sandbox Code Playgroud)

我尝试在 内部设置aglobal a或使用修饰符,但它似乎不起作用。有没有办法让它识别并正常运行?nonlocaldefa

python

28
推荐指数
3
解决办法
23万
查看次数

为什么Python中的函数可以在封闭范围内打印变量但不能在赋值中使用它们?

如果我运行以下代码:

x = 1

class Incr:
    print(x)
    x = x + 1
    print(x)

print(x)
Run Code Online (Sandbox Code Playgroud)

它打印:

1
2
1
Run Code Online (Sandbox Code Playgroud)

没问题,这正是我的预期.如果我做以下事情:

x = 1

class Incr:
    global x
    print(x)
    x = x + 1
    print(x)

print(x)
Run Code Online (Sandbox Code Playgroud)

它打印:

1
2
2
Run Code Online (Sandbox Code Playgroud)

也是我所期待的.没有问题.

现在,如果我开始按如下方式创建增量函数:

x = 1

def incr():
    print(x)

incr()
Run Code Online (Sandbox Code Playgroud)

它按照我的预期打印1.我假设它这样做是因为它无法x在其本地范围内找到,因此它搜索其封闭范围并找到x它.到目前为止没有问题.

如果我这样做:

x = 1

def incr():
    print(x)
    x = x + 1

incr()
Run Code Online (Sandbox Code Playgroud)

这在回溯中给出了以下错误:

UnboundLocalError:赋值前引用的局部变量'x'.

为什么Python不只是搜索封闭空间,x因为它找不到x像我class Incr一样用于赋值的值?请注意,我不是在问这个功能如何工作.我知道如果我执行以下操作,该功能将起作用:

x = 1

def incr(): …
Run Code Online (Sandbox Code Playgroud)

python scope

25
推荐指数
2
解决办法
6229
查看次数

if语句中的Python变量范围

在Python中,if语句中的变量范围是否在if语句之外可见?(来自Java背景,所以发现这有点奇怪)

在下面的例子中,name首先在if-block中定义,但变量在if-block之外也是可见的.我原以为会发生错误但是'joe'会打印出来.

if 1==1:
    name = 'joe'
print(name)
Run Code Online (Sandbox Code Playgroud)

python

24
推荐指数
1
解决办法
2万
查看次数

如何在已定义变量后更改变量?

我正在尝试添加或减去已定义的变量,但我无法弄清楚如何使用新值覆盖旧值.

a = 15

def test():
    a = a +10
    print ( a )

test()
Run Code Online (Sandbox Code Playgroud)

错误信息:

Traceback (most recent call last):
  File "test.py", line 7, in <module>
    test()
  File "test.py", line 4, in test
    a = a +10
UnboundLocalError: local variable 'a' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

python scope python-3.x

21
推荐指数
2
解决办法
7992
查看次数