当前位置: 首页 > 面试题库 >

总是在作业之前先评估作业的右侧吗?

章昆琦
2023-03-14
问题内容

这是一个代码片段。

x = {}
x[1] = len(x)

print x
{1: 0}

这个定义好吗?也就是说,可以x == {1: 1}代替吗?

因为我记得C ‘98中的等效程序(如果使用 std::map)具有未定义的行为。用VS编译器和G 编译时,程序的输出是不同的。


问题答案:

正如我在评论中提到的,该测试用例可以简化为:

x = {}
x[1] = len(x)

那么问题就变成了x[1] == 0,或者是x[1] == 1

让我们看一下相关的2.x文档和3.x文档:

Python从左到右计算表达式。请注意,在评估分配时,右侧的评估先于左侧。

在以下各行中,表达式将按其后缀的算术顺序求值:

expr3, expr4 = expr1, expr2

因此…

len(x)将在我们执行之前进行完全计算x[1],因此x[1] == 0,这是定义明确的。



 类似资料:
  • > 我试图在作业完成之前返回Spring Batch作业ID。 我当前的实现只在作业完成后返回信息。 我使用批处理程序控制器和批处理服务,发布在下面。谢谢,我是新来的Spring Batch,经过详尽的搜索,找不到太多与我的问题相关的。有一个帖子有人使用Apache骆驼,但我没有。 控制器 服务 再次感谢。 编辑 我已将其添加到批处理配置中 编辑 在马哈茂德·本·哈辛的评论的帮助下,我解决了这个问

  • 现在我需要实现作业队列,因为有些作业不能并行启动。问题是某些作业的状态()是从客户机传递的,为了排队的目的,应该保持这些状态。另一方面,我不能根据用户请求调度作业,因为我不知道什么时候应该执行它!(应该在上一个作业之后立即执行)

  • 问题内容: 为什么不起作用? 无法理解为什么作业的左侧不是变量。 有人帮忙吗? 问题答案: 如果您只想增加5,而又不限于此,则可以避免冗长,而可以这样做: 这将in- in 的值原地增加5。

  • 假设以下进程在指定的时间到达执行。每个进程将运行列出的时间量。 我想绘制甘特图并计算抢占式最短作业优先调度的平均等待时间。 解决办法 http://imgur.com/fP8u61C 等待时间为2毫秒。 请告诉我这是否正确。 我怀疑的步骤是,在进程B到达的3ms时,调度程序是完成进程A还是启动进程B。

  • 1. Redis是什么、特点、优势 Redis是一个开源的使用C语言编写、开源、支持网络、可基于内存亦可持久化的日志型、高性能的Key-Value数据库,并提供多种语言的API。 它通常被称为 数据结构服务器 ,因为值(value)可以是 字符串(String)、哈希(Map)、 列表(list)、集合(sets) 和 有序集合(sorted sets)等类型。 Redis 与其他 key - v