【问题标题】:Python NameError: global name not definedPython NameError:未定义全局名称
【发布时间】:2018-06-11 15:29:24
【问题描述】:

我正在尝试在另一个函数中使用一个函数并给出错误。我正在使用类作为结构。我尝试将块初始化为零,但它没有用。块也是一个字节

Chunk = bytearray(b'\x00') # is it a good idea to use this or any other options?

class Prog:
    PROGRAMMING_FLAG       = False
    SET_ADD_FLAG           = False
    DATA_FLAG              = False
    ADD_COMMAND_FLAG       = False
    ERASE_FLAG             = False
    ATTEMPT                = 1

def prog_flash(Chunk):

try:
    Prog.DATA_BUFFER = []
    Prog.ADD_COMMAND_FLAG = True
    Prog.DATA_BUFFER.append(hex(0x02))
    No_Of_Bytes = Chunk * 64
    for index in range(0,64):
        Prog.DATA_BUFFER.append(hex(DataBuffer[No_Of_Bytes+index]))
    Prog.DATA_BUFFER.append(hex(Calculate_Checksum(Prog.DATA_BUFFER[1:Prog.DATA_BUFFER.__len__()])))
    Prog.DATA_FLAG = True
    return Prog.DATA_BUFFER

except Exception, e:
    print("Error")
    pass

def other_fn():
   prog_flash(Chunk)

错误:

NameError:未定义全局名称“块”

【问题讨论】:

  • 当然Chunk 永远不会被定义,你永远不会分配给它。你想传递什么给prog_flash
  • 这段代码有太多问题,你没有分享实际的错误
  • 你想将什么值传递给pring_flash()Chunk 是一个变量名prog_flash() 函数内,而不是在外面。
  • 块是一定大小的数据,以字节为单位。 hex 0x02 是一个写入它的命令,以使树莓派知道开始闪烁的命令。我应该如何定义 Chunk ?尝试初始化和使用,但它给出了同样的错误
  • 这甚至不应该以名称错误结束运行;在这成为问题之前应该有一个语法错误。

标签: python python-2.7 class global nameerror


【解决方案1】:

DataBuffer 没有定义,Calculate_Checksum 也没有定义,

结构应该是这样的

Chunk = bytearray(b'\x00') # is it a good idea to use this or any other options?

class Prog:
    PROGRAMMING_FLAG       = False
    SET_ADD_FLAG           = False
    DATA_FLAG              = False
    ADD_COMMAND_FLAG       = False
    ERASE_FLAG             = False
    ATTEMPT                = 1

def prog_flash(Chunk):

    try:
        Prog.DATA_BUFFER = []
        Prog.ADD_COMMAND_FLAG = True
        Prog.DATA_BUFFER.append(hex(0x02))
        No_Of_Bytes = Chunk * 64
        for index in range(0,64):
            Prog.DATA_BUFFER.append(hex(DataBuffer[No_Of_Bytes+index]))
        Prog.DATA_BUFFER.append(hex(Calculate_Checksum(Prog.DATA_BUFFER[1:Prog.DATA_BUFFER.__len__()])))
        Prog.DATA_FLAG = True
        return Prog.DATA_BUFFER
    except Exception, e:
        # handle Expection
        print "There was an error: %s" %(e)
        pass


def other_fn():
    prog_flash(Chunk)


if __name__ == '__main__':
    other_fn()

【讨论】:

    猜你喜欢
    • 2013-08-23
    • 2013-07-20
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    相关资源
    最近更新 更多