Python NameError:名称未定义(与默认输入参数类型有关)

2023-12-06

我对我打电话的事实有疑问len(myByteArray)在我声明的函数的输入参数中。我希望它成为默认参数,但 Python 似乎不喜欢它。myByteArray属于类型bytearray. See 关于 bytearray 的文档在这里。我正在访问它的内置find功能,记录在这里(参见“bytes.find”)。

我的功能:

def circularFind(myByteArray, searchVal, start=0, end=len(myByteArray)):
    """
    Return the first-encountered index in bytearray where searchVal 
    is found, searching to the right, in incrementing-index order, and
    wrapping over the top and back to the beginning if index end < 
    index start
    """
    if (end >= start):
        return myByteArray.find(searchVal, start, end)
    else: #end < start, so search to highest index in bytearray, and then wrap around and search to "end" if nothing was found 
        index = myByteArray.find(searchVal, start, len(myByteArray))
        if (index == -1):
            #if searchVal not found yet, wrap around and keep searching 
            index = myByteArray.find(searchVal, 0, end)
        return index 

尝试使用上述函数的示例:

#-------------------------------------------------------------------
#EXAMPLES:
#-------------------------------------------------------------------
#Only executute this block of code if running this module directly,
#*not* if importing it
#-see here: http://effbot.org/pyfaq/tutor-what-is-if-name-main-for.htm
if __name__ == "__main__": #if running this module as a stand-alone program
    import random
    random.seed(0)

    bytes = bytearray(100)
    for i in range(len(bytes)):
        bytes[i] = int(random.random()*256)

    print(list(bytes)); print();

    print('built-in method:')
    print(bytes.find(255))
    print(bytes.find(2,10,97))
    print(bytes.find(5,97,4))

    print('\ncircularFind:')
    print(circularFind(bytes,255))
    print(circularFind(bytes,2,10,97))
    print(circularFind(bytes,5,97,4))

Error:

NameError:名称“myByteArray”未定义

如果我只是删除我的默认参数(=0 and =len(myByteArray)),但是,它工作得很好。但是......我真的想要那些默认参数,以便start and end参数是可选的。我该怎么办?

在 C++ 中,这很容易,因为参数类型是在编写函数时指定的。


Python 默认参数在定义函数时计算。相反,你想要这样的东西:

def circularFind(myByteArray, searchVal, start=0, end=None):
    """
    Return the first-encountered index in bytearray where searchVal 
    is found, searching to the right, in incrementing-index order, and
    wrapping over the top and back to the beginning if index end < 
    index start
    """
    if end is None:
        end = len(myByteArray)
    # continue doing what you were doing
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python NameError:名称未定义(与默认输入参数类型有关) 的相关文章

随机推荐

  • 实体框架 - “无法创建‘闭包类型’类型的常量值...”错误

    为什么我会收到错误 无法创建 闭包类型 类型的常量值 仅有的 支持基本类型 例如 Int32 String 和 Guid 这个背景 当我尝试枚举以下 Linq 查询时 IEnumerable
  • 除了使用时间来生成随机数之外,还有其他选择吗?

    我试图在计算集群中同时运行一段代码的多个实例 2000 个实例左右 它的工作方式是 我提交作业 集群将在节点经常打开时运行它们 每个节点有多个作业 这似乎在使用时间种子的随机数生成中为大量实例生成相同的值 我可以使用一个简单的替代方案吗 可
  • 使用 python 列表理解的毕达哥拉斯三元组

    我可以使用 for 循环找出毕达哥拉斯三元组 如下所示 def triplet n Find all the Pythagorean triplets between 1 and n inclusive for a in range n 1
  • 无法将类型“double”隐式转换为“string”

    我正在编写一个程序来获取圆的半径并输出直径 面积和周长 我尝试从直径开始 但不断收到错误 无法将类型 double 隐式转换为 string 我已经使用整数完成了类似的程序 但我一生都无法弄清楚如何在文本框中接收浮点数并计算它们以便我可以输
  • 缩进#define

    我知道 defines 等通常不会缩进 为什么 我目前正在编写一些代码 其中混合了可怕的内容 defines ifdefs elses endif等等 所有这些经常与普通的 C 代码混合在一起 的非缩进 defines 使它们难以阅读 以及
  • 日期查找表 (1990/01/01:2041/12/31)

    我使用 DATE 的主表来查找日期和其他值 以便控制我的应用程序中的多个事件 间隔和计算 它包含从 01 01 1990 到 12 31 2041 之间每一天的行 我如何使用此查找表的一个示例是 一位顾客典当了一件物品 JAN 31 201
  • 如何在 Django 模型中存储元组列表?

    是否可以存储元组的字段Model在姜戈 就我而言 我有一个模型翻译器 翻译者应该存储有关他可以翻译哪些语言的信息 但可能存在翻译人员无法将英语翻译成德语的情况 但他 她可以反方向进行翻译 所以一个对象翻译器可以存储这个 从德语到英语 从 荷
  • 如何检测用户在 Angular2 中导航回来?

    我有一个组件 我需要检测用户是否在浏览器中按下后退按钮来导航回来 目前我正在订阅路由器事件 constructor private router Router private activatedRoute ActivatedRoute th
  • 如何使用python-docx替换Word文档中的文本并保存

    同一页面中提到的 oodocx 模块将用户引导至似乎不存在的 examples 文件夹 我已经阅读了 python docx 0 7 2 的文档 以及我在 Stackoverflow 中可以找到的有关该主题的所有内容 所以请相信我已经完成了
  • HttpConnection 无法在真实设备中工作 -Blackberry

    这是我的代码 public String Serverconnection String url String line if DeviceInfo isSimulator url url deviceSide true try HttpC
  • 通过 Net::HTTP 下载 zip 文件

    我正在尝试从下载最新的 zipWordPress org使用 Net HTTP 这是我到目前为止所得到的 Net HTTP start wordpress org http resp http get latest zip open a z
  • 登录-AzureRmAccount 和选择-AzureRmSubscription

    我已经在 Windows Server 2012 R2 上安装了 AzureRm 和 Azure 模块 我可以从此模块运行其他 cmdlet 例如 AddAzureRmAccount Get AzureRmSubscription 但 Lo
  • Android,沿路径移动位图?

    我想知道是否可以从路径中选择坐标来随着时间的推移绘制位图 例如 我有一张太阳的图像 我想随着时间的推移沿着弧形路径移动它 有没有什么方法可以定义这样的路径 然后沿着它移动 这样我就不必进行数学计算 Thanks 是的 可以沿着路径移动图像
  • 如何在 MySQL 中设置日语模式排序规则

    我在整理方面遇到问题 我想设置排序规则以支持日语 例如 当 table firstname 包含 时 包含 的查询应返回该记录 提前致谢 这就像 大写 和 小写 对吗 mysql gt SELECT COLLATE utf8 general
  • TestNG DataProvider 从 testng.xml 配置文件读取测试数据?

    TestNG DataProvider 是否可以从 testng xml 配置文件中读取测试数据 或者由于某种原因这是不现实的 我希望能够在套件级别和类级别从该文件读取测试数据 那么 给定一个像这样的testing xml 文件 我不确定它
  • Xamarin.Forms:UWP 应用的本地化

    如果我在 UWP 设备上运行我的应用程序 我会在Output window MakePRI 警告 0xdef00522 找到语言 en de 的资源 但未找到默认语言的资源 de DE en US 更改默认语言或使用默认语言限定资源 htt
  • ng-grid 将多个项目插入单元格

    如何将多个值插入到 1 个单元格 例如将电子邮件 电话和地址插入到 1 个单元格 我需要在单元格中减少行数和更多信息 我尝试过这样的方式 angular forEach scope genData function row row getN
  • Axis2 Web 服务客户端生成 - 无需修改客户端的类型

    是否可以使用 Axis2 和 Eclipse 生成 Web 服务客户端并让它使用包中已有的 java 类型 而不是创建它自己的类型 当然 原因是如果我已经创建了类型 A 并且它创建了自己的类型 A 我不能只将类型 A 的变量分配给类型 B
  • __has_cpp_attribute 不是“类似函数”的宏?

    我正在尝试介绍 deprecated 属性到我的代码库中 然而 并不是所有我需要支持的编译器都支持这种语法 标准化之前不同编译器使用的各种方法在属性标准化提案 N2761 因此 我尝试使用此属性有条件地编译 has cpp attribut
  • Python NameError:名称未定义(与默认输入参数类型有关)

    我对我打电话的事实有疑问len myByteArray 在我声明的函数的输入参数中 我希望它成为默认参数 但 Python 似乎不喜欢它 myByteArray属于类型bytearray See 关于 bytearray 的文档在这里 我正