首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么python不允许将未绑定的标识符用作字典键?

Python不允许将未绑定的标识符用作字典键的原因是为了确保字典的键是可靠且可预测的。

未绑定的标识符指的是在当前作用域中没有定义或赋值的变量或函数名。如果允许将未绑定的标识符用作字典键,可能会导致以下问题:

  1. 不可预测性:未绑定的标识符在不同的上下文中可能具有不同的值,这会导致字典的键不可预测。这样会增加代码的复杂性和错误的可能性。
  2. 键的唯一性:字典的键必须是唯一的,如果允许未绑定的标识符作为键,可能会导致多个键具有相同的未定义值,这将违反字典键的唯一性要求。
  3. 代码可读性和可维护性:使用未绑定的标识符作为字典键会使代码更难理解和维护。其他开发人员可能不清楚未绑定标识符的含义和值,从而增加了代码的复杂性和错误的风险。

为了避免这些问题,建议在使用字典时,将已经定义或赋值的标识符作为键。如果需要使用未绑定的标识符作为键,可以考虑使用字符串作为键的替代方案,因为字符串是不可变的、可靠的,并且可以唯一地标识一个键。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台(IoT Hub):https://cloud.tencent.com/product/iothub
  • 腾讯云移动开发:https://cloud.tencent.com/product/mobile
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙:https://cloud.tencent.com/product/mu
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

27 个问题,告诉你Python为什么这么设计

为什么字典key必须是不可变字典哈希表实现使用从键值计算哈希值来查找。如果是可变对象,则其值可能会发生变化,因此其哈希值也会发生变化。...但是,由于无论谁更改对象都无法判断它是否被用作字典键值,因此无法在字典中修改条目。然后,当你尝试在字典中查找相同对象时,无法找到它,因为其哈希值不同。...元组是不可变,因此可以用作字典。 已经提出一些不可接受解决方案: 哈希按其地址(对象ID)列出。...允许列表作为,但告诉用户不要修改它们。当你意外忘记或修改列表时,这将产生程序中一类难以跟踪错误。它还使一个重要字典不变量无效:d.keys() 中每个值都可用作字典。...列表用作字典后,应标记为其只读。问题是,它不仅仅是可以改变其值顶级对象;你可以使用包含列表作为元组。

6.6K11

Python官方二十七问,你知道个啥?

为什么字典 key 必须是不可变字典哈希表实现使用从键值计算哈希值来查找。如果是可变对象,则其值可能会发生变化,因此其哈希值也会发生变化。...但是,由于无论谁更改对象都无法判断它是否被用作字典键值,因此无法在字典中修改条目。然后,当你尝试在字典中查找相同对象时,无法找到它,因为其哈希值不同。...元组是不可变,因此可以用作字典。 已经提出一些不可接受解决方案: 哈希按其地址(对象 ID)列出。...允许列表作为,但告诉用户不要修改它们。当你意外忘记或修改列表时,这将产生程序中一类难以跟踪错误。它还使一个重要字典不变量无效:d.keys() 中每个值都可用作字典。...列表用作字典后,应标记为其只读。问题是,它不仅仅是可以改变其值顶级对象;你可以使用包含列表作为元组。

2.5K20

27 个问题,告诉你Python为什么这么设计?

为什么字典key必须是不可变字典哈希表实现使用从键值计算哈希值来查找。如果是可变对象,则其值可能会发生变化,因此其哈希值也会发生变化。...但是,由于无论谁更改对象都无法判断它是否被用作字典键值,因此无法在字典中修改条目。然后,当你尝试在字典中查找相同对象时,无法找到它,因为其哈希值不同。...元组是不可变,因此可以用作字典。 已经提出一些不可接受解决方案: 哈希按其地址(对象ID)列出。...允许列表作为,但告诉用户不要修改它们。当你意外忘记或修改列表时,这将产生程序中一类难以跟踪错误。它还使一个重要字典不变量无效:d.keys() 中每个值都可用作字典。...列表用作字典后,应标记为其只读。问题是,它不仅仅是可以改变其值顶级对象;你可以使用包含列表作为元组。

3.1K20

干货 | 27 个问题,告诉你 Python 为什么如此设计?

为什么字典 key 必须是不可变字典哈希表实现使用从键值计算哈希值来查找。如果是可变对象,则其值可能会发生变化,因此其哈希值也会发生变化。...但是,由于无论谁更改对象都无法判断它是否被用作字典键值,因此无法在字典中修改条目。然后,当你尝试在字典中查找相同对象时,无法找到它,因为其哈希值不同。...元组是不可变,因此可以用作字典。 已经提出一些不可接受解决方案: 哈希按其地址(对象 ID)列出。...允许列表作为,但告诉用户不要修改它们。当你意外忘记或修改列表时,这将产生程序中一类难以跟踪错误。它还使一个重要字典不变量无效:d.keys() 中每个值都可用作字典。...列表用作字典后,应标记为其只读。问题是,它不仅仅是可以改变其值顶级对象;你可以使用包含列表作为元组。

2.7K10

Python 核心设计理念27个问题及解答

为什么字典 key 必须是不可变字典哈希表实现使用从键值计算哈希值来查找。如果是可变对象,则其值可能会发生变化,因此其哈希值也会发生变化。...但是,由于无论谁更改对象都无法判断它是否被用作字典键值,因此无法在字典中修改条目。然后,当你尝试在字典中查找相同对象时,无法找到它,因为其哈希值不同。...元组是不可变,因此可以用作字典。 已经提出一些不可接受解决方案: 哈希按其地址(对象 ID)列出。...允许列表作为,但告诉用户不要修改它们。当你意外忘记或修改列表时,这将产生程序中一类难以跟踪错误。它还使一个重要字典不变量无效:d.keys() 中每个值都可用作字典。...列表用作字典后,应标记为其只读。问题是,它不仅仅是可以改变其值顶级对象;你可以使用包含列表作为元组。

3.3K21

干货 | 27 个问题,告诉你 Python 为什么如此设计?

为什么字典 key 必须是不可变字典哈希表实现使用从键值计算哈希值来查找。如果是可变对象,则其值可能会发生变化,因此其哈希值也会发生变化。...但是,由于无论谁更改对象都无法判断它是否被用作字典键值,因此无法在字典中修改条目。然后,当你尝试在字典中查找相同对象时,无法找到它,因为其哈希值不同。...元组是不可变,因此可以用作字典。 已经提出一些不可接受解决方案: 哈希按其地址(对象 ID)列出。...允许列表作为,但告诉用户不要修改它们。当你意外忘记或修改列表时,这将产生程序中一类难以跟踪错误。它还使一个重要字典不变量无效:d.keys() 中每个值都可用作字典。...列表用作字典后,应标记为其只读。问题是,它不仅仅是可以改变其值顶级对象;你可以使用包含列表作为元组。

2.6K20

【干货】Python基础语法之变量类型

Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。Python标识符是区分大小写。 以下划线开头标识符是有特殊意义。...Python 可以同一行显示多条语句,方法是用分号 ; 分开,如: ? Python保留字符 下面的列表显示了在Python保留字。这些保留字不能用作常数或变数,或任何其他标识符名称。...Python元组 元组是另一个数据类型,类似于List(列表)。元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。 ? 元组是不允许更新。...而列表是允许更新 ---- · Python字典 字典(dictionary)是除列表以外python之中最灵活内置数据结构类型。列表是有序对象集合,字典是无序对象集合。...两者之间区别在于:字典当中元素是通过来存取,而不是通过偏移存取。 字典用"{ }"标识。字典由索引(key)和它对应值value组成 ?

69010

Python - 字典值求和

映射是可变,这意味着您可以根据需要附加、消除或调整元素-值对。我们计划探索词典基础知识及其重要性。此外,我们学习使用 Python 编程语言对映射内标识符执行总计算过程。...定义 在 Python 编程语言中,映射表示用于存储及其各自值无序容器。哈希映射中元素可以存储任何数据类别,并且可以通过指向其相应标识符来获取。...字典中链接到特定值相加需要提取与指定匹配值。 语法 sum_of_values = sum(dictionary[key]) “字典”:应从中提取值字典名称。...步骤2:可以访问与提供关联字典值列表。 第 3 步:要计算值总和,请使用 sum() 函数。 步骤 4:总和分配给在步骤 1 中创建变量。 步骤5:应打印或返回值总和。...这将遍历“my_dict”地图中每个项目。在每个循环中,程序都会验证当前标识符是否与分配密钥匹配。此过程通过检查输入“”与值“key_to_sum”比较来实现。

19820

Python编程导论】第五章- 结构化类型、可变性与高阶函数

Univs和Univs1被绑定到不同对象,可以使用Python内置函数id验证这一点,id会返回一 个对象唯一整数标识符。可以用这个函数检测对象是否相等。...5.6 字典 字典:(dict,dictionary缩写)字典类型对象与列表很相似,区别在于字典使用对其中值进行引用,可以字典看作一个/值对集合。...这就是为什么monthNumbers[1]确定无疑地指向为1项目,而不是第二个项目。...但分配给迭代变量值是字典,不是/值对。迭代过程中没有定义顺序。...dicttype类型对象可以很容易地转换为列表,如list(months)。 并非所有对象都可以用作字典必须是一个可散列类型对象。

1.3K30

20道常考Python面试题大总结

Python内置垃圾回收器会回收使用所有的使用内存,使其适用于堆空间。 2、解释PythonHelp()函数和Dir()函数。...退出时,由于拥有自己高效清理机制,Python会尝试取消分配/销毁其他所有对象。 4、什么是猴子补丁? 在运行期间动态修改一个类或模块。 运行结果是: 5、Python字典是什么?...字典指的是Python内置数据类型。它定义了和值之间一对一关系,包含了一对及其对应值。字典索引。 6、解释一下Python逻辑运算符。...Python中有3个逻辑运算符:and,or,not。 7、为什么不建议以下划线作为标识符开头? Python没有私有变量概念,所以约定速成以下划线为开头来声明一个变量为私有。...运行结果是: 10、Python标识符长度有多长? 标识符可以是任意长度。

1.5K20

Python3.8 新特性-很有用

python循环语法中,continue关键字不允许在finally子句中使用 python3.8版本取消了该限制 index = 0 while index < 3: try:...(3) 函数关键字参数限制 函数调用中允许使用关键字名称语法受到进一步限制。 特别地,f((keyword)=arg) 不再被允许。 关键字参数赋值形式左侧绝不允许一般标识符以外其他内容。...下面是一个修改 statistics.mean() 函数来防止 data 形参被用作关键字参数例子: >>> from statistics import mean >>> mean(data=[10...** (11) 字典推导式改进 字典推导式已与字典字面值实现同步,会先计算再计算值: >>> # Dict comprehension >>> cast = {input('role?...Eric Idle (12) 字典数据执行顺序 对执行顺序保证,对赋值表达式来说很有用,因为在表达式中赋值变量将可在值表达式中被使用: >>> names = ['Martin von Löwis

66130

插件捆绑目录

目前(Sketch3.4)这是一个可选,但我们可以在插件页面的某个时刻将它用作过滤选项。 它在内部使用BCCompareVersions函数来分割字符串.,然后比较每个组件整数值。...数组中每个条目都是一个字典,具有以下属性: name 命令显示名称。该值在插件菜单中使用。 identifier 一个字符串,用于指定插件捆绑中命令唯一标识符。...这用于一致地命令映射到操作,而不考虑命令名称变化。 shortcut 一个可选字符串,指定了该命令默认快捷,例如:ctrl t,cmd t,ctrl shift t。...它可以包含两种类型项目: 一个给出命令标识符字符串 描述子菜单字典(包含“标题”和“项目”) isRoot 默认情况下,此字典中列出菜单项显示在菜单中,其名称由标题键指定。...如果指定了isRoot,并且值为true,则这些项目插入到插件菜单根级别,而不是插入到子文件夹中。在这种情况下,标题密钥将被忽略。 这个在子菜单中被忽略。 菜单示例 这是一个例子。

1.1K60

SqlAlchemy 2.0 中文文档(十四)

另请参见 字典集合 - 使用背景 参数: attr_name - 映射类上 ORM 映射属性字符串名称,其值将在特定实例上用作字典条目的。...另请参见 字典集合 - 使用背景 参数: attr_name – 映射类上 ORM 映射属性字符串名称,特定实例上该值将用作该实例字典条目的。...使用普通 Python @property 允许几乎任何关于对象细节或组合细节被用作,就像下面我们将其建立为 Note.keyword 和 Note.text 字段前十个字母元组时那样: class...另请参见 字典集合 - 使用背景 参数: attr_name – 映射类上 ORM 映射属性字符串名称,在特定实例上值将用作该实例字典条目的。...KeyFuncDict也可以用作用户定义自定义字典基类。 2.0 中变更:MappedCollection重命名为KeyFuncDict。

4010

YAML,另一种标记语言?不止是标记语言!

不过YAML值允许使用空格符进行缩进,不允许使用制表符Tab,这是因为不同工具对待制表符方式不同。...缩进时不允许使用制表符Tab,只允许使用空格。 缩进空格数目不重要,只要相同层级元素左侧对齐即可。 注释 YAML中注释以#号开头。它们可以出现在字段值之后,也可以占据整行。...YAML文档中每一项都是至少一个字典成员。类型始终是字符串。 YAML-值对中值是标量。它们表现行为类似于Javascript和Python等语言中标量类型。...同一个数组中值不必是同一类型。 字典 与数组一样,可以字典放入单行内。我们在上面看到了这种格式。...类型Python打印字典格式: --- foo: { thing1: huey, thing2: louie, thing3: dewey } 也见过在多行里指定字典元素格式: --- foo:

1.1K30

资源 | 忘了Python关键语句?这份备忘录拯救你记忆

有序序列包含列表、元组和字符串等,其中列表和元组重要区别是前者可变,后者不可变,列表主要用于存储同构数据,元组主要用于存储异构数据;键值容器没有预先设置顺序,可以通过访问快速查找值,包含字典、集合等...标识符:用于代表变量、函数、模块、类等名称。注意尽量避免使用读音符号,不要使用 Python3 中关键字,Python3 标识符是区分大小写,框图中分别列出了允许和不允许标识符示例。...类型转换:数据从某一个数据类型转换为另一个数据类型,或某一个数据结构转换为另一个数据结构。...Python 提供了非常多内嵌运算函数,包括对数值变量运算和各种数据结构操作。如下展示了对列表、字典、集合和一般数据结构操作方法,后面还继续展示了字符串或元组操作。...字典同样也有非常多方法,如上所示删除字典内所有元素 clear() 方法、以列表返回可遍历,值)元组 items() 方法,以及把字典 d2 /值对更新到 d 里面的 update(d2

1.1K30

Python 基础知识学习

python中所有标识符可以包括英文、数字以及下划线_但不能以数字开头。        python标识符是区分大小写。        以下划线开头标识符是有特殊意义。...这些保留字不能用作常数或变数或任何其他标识符名称      所有Python关键字只包含小写字母。...列表是有序对         象结合字典是无序对象集合。    两者之间区别在于字典当中元素是通过来存取而不是通过偏移存取。    字典用"{ }"标识。...'one' 值 print dict[2] # 输出为 2 值 print tinydict # 输出完整字典 print tinydict.keys() # 输出所有 print tinydict.values...模块也是Python对象具有随机名字属性用来绑定或引用。 简单地说模块就是一个保存了Python代码文件。模块能定义函数类和变量。模块里也能包含可          执行代码。

1.7K10

Python之基础语法和六大数据类型

如下所示: ​​ 注意:注释所标注内容是无法编译出来哦! ​​ 2、标识符 1.标识符是区分大小写。 2.第一个字符必须是字母或下划线。 3.标识符其他部分由字母、数字和下划线组成。...(建议使用Tab进行缩进) 2.在用python写语句时一般都是一行写完一条语句,但凡是都有例外,如果语句很长,一行写不完的话就需要用到反斜杠\来实现多行语句。...,并且我们不能把他们用作任何标识符名称。...) 字典每个键值key=>value对冒号:分割,每个对之间用逗号(,)分割,整个字典包括在大括号{}中,格式如下所示: 必须是唯一,但值则不必。...值可以取任何数据类型,但必须是不可变,如字符串,数字 5.1、访问字典值 5.2、 修改字典 6、Set(集合) 集合可以使用大括号{}或者set()函数创建集合,注意:创建一个空集合必须用set

23452

SqlAlchemy 2.0 中文文档(二十四)

如果传递了函数,该函数应返回一个可散列令牌;此令牌将用作字典,以便存储和检索当前Session。...多绑定绑定Session对象中歧义可以通过任何可选关键字参数来解决。最终,这使得使用get_bind()方法来解析。 参数: bind_arguments – 绑定参数字典。...如果传递,则该函数应返回可哈希标记;此标记将用作字典,以便存储和检索当前 Session。...多绑定绑定Session对象中歧义可以通过任何可选关键字参数来解决。最终,通过使用get_bind()方法进行解决。 参数: bind_arguments – 绑定参数字典。...对于多重绑定绑定Session,使用mapper或clause参数来确定要返回适当绑定

5610

教女朋友学 Python 第 3 天:语言元素

2.2 变量命名规则 Python 中,是通过标识符来给变量命名,而标识符就是用于给程序中变量、类、方法命名符号。简单来说,标识符就是合法名字。而什么是合法名字呢?...那我们就来看看 Python标识符命名规则。 Python 中,标识符 必须以字母、下划线开头,然后后面可以跟上任意数目的字母、数字以及下划线,而且也区分大小写。...字典值虽然能够没有限制,但是是有限制,主要有如下两点需要记住: 不允许同一个出现两次; 必须不可变,所以它可以是数字、字符串或元组,但是不能用列表; 字典也有许多方法供我们使用,主要方法总结如下...() 删除字典内所有元素 dict.copy() 返回一个字典浅复制 dict.haskey(key) 如果字典 dict 里返回 True,否则返回 False dict.get(key) 返回指定值...dict.keys() 以列表返回一个字典所有的 dict.values() 以列表返回字典所有值 dict.items() 以列表返回可遍历(, 值) 元组数组 pop(key) 删除字典给定

83620
领券