为什么分配给空列表(例如 [] = "")不会出错?

2023-11-25

在 python 3.4 中,我正在输入

[] = "" 

并且它工作正常,没有引发异常。虽然当然[]不等于""然后。

[] = ()

也工作正常。

"" = []

但正如预期的那样引发了异常,

() = ""

但正如预期的那样引发了异常。发生什么了?


你不是为了平等而比较。你是指派.

Python 允许您分配给多个目标:

foo, bar = 1, 2

将两个值赋给foo and bar, 分别。您所需要的只是一个sequence or iterable位于右侧,左侧是名称列表或元组。

当你这样做时:

[] = ""

你分配了一个empty序列(空字符串仍然是序列)到空名称列表。

这与执行以下操作本质上是一样的:

[foo, bar, baz] = "abc"

你最终会在哪里foo = "a", bar = "b" and baz = "c",但字符较少。

但是,您不能分配给字符串,因此""赋值左侧永远不会起作用,并且始终是语法错误。

See the 赋值语句文档:

赋值语句计算表达式列表(请记住,这可以是单个表达式或逗号分隔的列表,后者生成一个元组),并将单个结果对象从左到右分配给每个目标列表。

and

将对象分配给目标列表,可选择用括号或方括号括起来,递归定义如下。

强调我的.

Python 不会为空列表抛出语法错误,这实际上是一个 bug!官方记录的语法不允许空的目标列表,并且对于空的()你确实得到了一个错误。看错误 23275;它被认为是无害的错误:

首先是认识到这种情况已经存在很长时间并且是无害的。

另请参阅为什么分配给空列表有效但分配给空元组无效?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么分配给空列表(例如 [] = "")不会出错? 的相关文章

随机推荐

  • 混合模式程序集未加载本机 C++ pdb 的符号

    我正在使用 C CLI 中的混合模式程序集 在混合模式组装中成功时 所有托管模式组装的 pdb 都会被加载 但即使本机 pdb 的信息显示在 模块 窗格中 即在 VS 调试 gt Windows gt 模块中 也不会加载本机 dll 和 p
  • 计算Javascript中两个日期之间的工作日(节假日除外)

    我有一个 javascript 函数 它计算两个日期之间的工作日 它可以工作 但问题是它不考虑假期 如何修改此函数 例如通过在异常数组中添加假期 在互联网上搜索了这个问题 但没有找到有关假期例外的信息 例如假期数组 var holidays
  • 附加模板字符串

    是否可以将模板字符串附加到 div 中 我正在尝试优化我的代码 目前我的代码必须创建元素 添加类 添加文本节点 然后将所有内容附加在一起 我想知道是否可以只创建一个模板字符串然后附加它 以提高效率 我不想用innerHTML 擦除当前div
  • 默认参数为泛型类型

    我有用 Swift 编写的协议及其实现 protocol P struct A P 协议用作某些功能的泛型类型 func foo
  • 如何确定是否由于共享冲突而引发 IOException?

    我有一个 C 应用程序 我想将文件复制到新位置 有时我需要覆盖现有文件 当发生这种情况时 我收到 System IO IOException 我想从共享冲突中恢复 但如何确定返回 IOException 是因为目标文件正在使用而不是其他原因
  • ggmap中的动态数据点标签定位

    我正在使用 R 中的 ggmap 包 并且对地理空间数据可视化相对较新 我有一个由十一个纬度和经度对组成的数据框 我想将其绘制在地图上 每个纬度和经度对都有一个标签 这是虚拟数据 lat lt c 47 597157 47 656322 4
  • 在发现“EntityFrameworkConfiguration”类型之前使用默认的 DbConfiguration 实例

    public class EntityFrameworkConfiguration DbConfiguration public EntityFrameworkConfiguration this SetModelCacheKey ctx
  • Google Pub/Sub 的 RetryPolicy 中配置的指数退避如何工作?

    The cloud google com go pubsub最近发布的库 在 v1 5 0 中 参见https github com googleapis google cloud go releases tag pubsub 2Fv1 5
  • 我可以重命名 numpy 记录数组中的字段吗

    我是 python 新手 所以这听起来可能很基础 我已经使用 csv2rec 导入了 csv 文件 第一行有标题 我想将标题更改为 x y z 这样做的最佳方法是什么 gt gt gt import matplotlib gt gt gt
  • Cython 中的内存视图排序

    如何在 Cython 中对内存视图进行就地排序 有没有内置函数可以做到这一点 现在我必须使用numpy数组代替并使用numpy的排序 这非常慢 为了跟进我的评论 这里有 3 个选项 numpy 和 C 和 C 标准库选项 from libc
  • 在seaborn中绘制回归时如何获得数值拟合结果

    If I use the seaborn library in Python to plot the result of a linear regression is there a way to find out the numerica
  • 未针对 Windows 配置 DefaultFirebaseOptions

    错误 flutter lib ui ui dart state cc 198 未处理的异常 不受支持的操作 尚未为 Windows 配置 DefaultFirebaseOptions 您可以通过再次运行 FlutterFire CLI 来重
  • 查找并替换字符串

    是否可以在页面加载之前查看页面的源代码 找到某个部分并将其替换为其他内容 我想使用 JavaScript 来完成此操作 以便我可以在 Chrome 扩展中使用它 所以像这样 找到 google com 替换为 yahoo com
  • 如何使用jquery联系叔叔

    div div div div div div 我在 me 我想选择我的叔叔 使用如下内容 me find uncle me next uncle me prev uncle How 你可以使用 parent and prev假设你的叔叔总
  • Visual Studio 2008 插件/加载项开发 - 入门

    和 关联这个计算器问题 我将如何创建自己的 Visual Studio 2008 插件 我查看了 MSDN 上的 Visual Studio 开发人员中心 但信息量巨大 项目类型繁多 我什至不知道从哪里开始 我应该从哪里开始寻找如果我想写一
  • na.locf 但不执行尾随 NA

    我有以下时间序列 gt y lt xts 1 10 Sys Date 1 10 gt y c 1 2 5 9 10 lt NA gt y 1 2011 09 04 NA 2011 09 05 NA 2011 09 06 3 2011 09
  • 如何在 Delphi 中以编程方式创建带有几个组件的表单

    我正在使用 Delphi 7 并尝试以编程方式创建表单 这是我的表单类存根 unit clsTStudentInfoForm interface uses Forms type TStudentInfoForm class TForm en
  • 为什么操作系统在内存足够的情况下却说无法给jvm分配内存

    我正在尝试使用以下命令启动一个新的 jvm java version 但是报错 There is insufficient memory for the Java Runtime Environment to continue Native
  • socket.io 套接字 ID 应该保密吗?

    我正在使用 socket io 开发一个 Web 应用程序 我目前正在使用套接字 ID 作为标识符 该标识符会广播给其他客户端 现在 这引发了安全问题 即该 ID 是否可用于劫持另一个用户会话 不幸的是 在网上很难找到这方面的任何信息 那么
  • 为什么分配给空列表(例如 [] = "")不会出错?

    在 python 3 4 中 我正在输入 并且它工作正常 没有引发异常 虽然当然 不等于 然后 也工作正常 但正如预期的那样引发了异常 但正如预期的那样引发了异常 发生什么了 你不是为了平等而比较 你是指派 Python 允许您分配给多个目