首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python dict的行为不一致

Python dict的行为不一致
EN

Stack Overflow用户
提问于 2020-02-11 18:08:48
回答 1查看 82关注 0票数 0

我有一个单独的python字典实例作为全局变量。我只在代码的开头给它赋值。有时dict.get()返回正确的对象,有时返回None。我找不到它的模式。

代码是一个等待HTTP请求并发送响应的web客户端。我初始化了一个名为active_games的字典来保存游戏列表,其中的键是来自服务器的游戏ids。调用start()时会将游戏对象添加到字典中,直到调用end()时才会将其删除。在这两者之间,move()被调用多次(通常是每秒多次)。move()中的print语句有时打印正确的字典,有时打印空的字典,然后抛出错误。

以下是代码的相关部分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import json
import os
import bottle

from api import ping_response, start_response, move_response, end_response
from game import game

# Store all games running on server
active_games = dict()

@bottle.post('/start')
def start():
    global active_games
    data = bottle.request.json
    new_game = game(data["game"]["id"])

    active_games[str(data["game"]["id"])] = new_game

    print(active_games)

    return new_game.start(data)

@bottle.post('/move')
def move():
    global active_games
    data = bottle.request.json

    print(active_games)

    return active_games.get(str(data["game"]["id"])).move(data)

@bottle.post('/end')
def end():
    data = bottle.request.json

    game_ending = active_games.pop(data["game"]["id"])

    return game_ending.end(data)

为什么dict.get()不能工作?谢谢你的帮助!如果有帮助,我可以编辑以添加日志和堆栈跟踪

EN

回答 1

Stack Overflow用户

发布于 2020-02-11 18:34:00

看一下您发布的代码片段,我认为它与start()end()方法中的global active_games行有关。

全局关键字用于从非全局作用域创建全局变量,例如在函数内部。”(https://www.w3schools.com/python/ref_keyword_global.asp,最后一次调用是在2020年2月2日,w3cschools.com -> Python Tutorial -> Python全局关键字->定义和用法)

但是您不需要在这些函数中声明您的active_games字典,因为您已经在脚本的开头声明了它们,如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Store all games running on server
active_games = dict()

因此,global active_games所做全部工作就是使用同名的空变量覆盖您的active_games字典,这就是None返回值的来源。

从您的问题描述可以看出,这可能并不是幕后发生的事情,但您至少可以从代码中删除任何global active_games实例,然后再与我联系

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60175011

复制
相关文章
海康威视 IP 摄像机未经身份验证的命令注入
# 此模块需要 Metasploit:https://metasploit.com/download
Khan安全团队
2022/03/09
2.5K0
地图上覆盖物压盖的优化
在做webgis的时候,会经常性的碰到地图覆盖物压盖的情况。本文讲述一种基于聚类思路的解决办法,实现使用的是openlayers4+。
牛老师讲GIS
2020/02/20
1.3K0
ICLR2019 图上的对抗攻击
Graph Adversarial Attacks的一个里程碑,作者也是Nettack的作者,Nettack是kdd 2018获得了best paper。
Houye
2020/04/07
7400
ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)
在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图。但是首先将修改点代码,使得发布日期属性(ReleaseDate)看上去更好。打开Models \ Movie.cs文件,并添加高亮行如下所示: using System; using System.ComponentModel.DataAnnotations; using System.Data.Entity; namespace MvcMovie.Models { public class Movie
葡萄城控件
2018/01/10
6.7K0
ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)
Asp.Net MVC4入门指南(6):验证编辑方法和编辑视图
在本节中,您将开始修改为电影控制器所新加的操作方法和视图。然后,您将添加一个自定义的搜索页。 在浏览器地址栏里追加/Movies, 浏览到Movies页面。并进入编辑(Edit)页面。 Edit(编辑
葡萄城控件
2018/01/10
4.3K0
Asp.Net MVC4入门指南(6):验证编辑方法和编辑视图
在地图上创建热力图的方法
热力图,是以特殊高亮的形式显示在地理区域的图示。通过颜色变化程度,可以直观反应出热点分布,区域聚集等数据信息。地图中的热力图就是把地图和热力图进行结合,实现在地图中进行热力图的显示。
thingjs
2021/08/25
1.6K0
本地多图上传预览
1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" 6 content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 7 <meta http-equiv
ProsperLee
2018/10/24
1.4K0
本地多图上传预览
【KDD23】图上的少样本学习
尽管图神经网络(GNNs)在节点分类任务中取得了成功,但其性能严重依赖每个类别有足够数量的标记节点的可用性。在现实情况中,不是所有的类别都有很多标记的节点,可能存在模型需要分类新类别的实例,这使得手动标记变得困难。为了解决这个问题,GNNs能够在只有少数标记节点的情况下分类节点是非常重要的,这被称为少样本节点分类。先前基于情景元学习的方法已在少样本节点分类中显示出成功,但我们的发现表明,只有在有大量不同训练元任务的情况下才能实现最优性能。为了应对基于元学习的少样本学习(FSL)的这一挑战,我们提出了一种新的方法,即任务等变图少样本学习(TEG)框架。我们的TEG框架使模型能够使用有限数量的训练元任务来学习可转移的任务适应策略,从而获得大范围元任务的元知识。通过结合等变神经网络,TEG可以利用它们的强大泛化能力来学习高度适应的任务特定策略。因此,即使在训练元任务有限的情况下,TEG也能够达到最新的性能。我们在各种基准数据集上的实验显示出TEG在准确性和泛化能力方面的优势,即使在使用最小的元训练数据的情况下,也强调了我们提出的方法在应对基于元学习的少样本节点分类的挑战方面的有效性。我们的代码可在以下链接获取:https://github.com/sung-won-kim/TEG。
Houye
2023/09/04
1870
【KDD23】图上的少样本学习
GNN如何利用图上的边信息?
链接:https://zhuanlan.zhihu.com/p/432923190
Houye
2021/11/17
4.8K0
GNN如何利用图上的边信息?
旷视的 To B 兵团
展览会上,旷视作为少有的AI企业,展示其在智慧城市微单元中的最新技术及产品成果,同时,与智能建筑、智慧园区相关的旷视AIoT产品“全家福”也首次亮相。
AI掘金志
2021/06/09
1.4K0
旷视的 To B 兵团
网络拓扑图上文本的巧妙应用
本文介绍了一种使用 Highcharts 在网页中绘制网络拓扑图的方法,包括节点的连接方式和连线的样式。首先介绍了网络拓扑图的基本样式和功能,然后通过具体示例展示了如何使用 Highcharts 实现网络拓扑图的绘制。在示例中,介绍了如何设置节点的位置、颜色、大小和连接方式,以及如何设置连线的样式和颜色。最后,介绍了一些高级功能,如节点的收缩和展开,连线的端点连接和箭头样式等。通过本文的介绍,用户可以快速掌握如何使用 Highcharts 在网页中绘制网络拓扑图,同时也可以进一步学习 Highcharts 的其他高级功能。
HT for Web
2018/01/03
7800
网络拓扑图上文本的巧妙应用
网络拓扑图上文本的巧妙应用
在前端网页设计中,文本是重要的组成部分,那么在网络拓扑图中也是一样的,文本在网络拓扑图上最基本的显示功能之一,在不同的应用场景下,会有不同的需求。但是不同的需求也逃不过一些基础设置,如位置、旋转、字体、颜色等需求。接下来我们就来详细聊聊 HT for Web 中文本的相关应用。 HT for Web 为网络拓扑图上的节点提供了两个文本,也确实需要两个文本同时存在的情况,比如车站上面的站牌,就有汉字和拼音的组合,如果做一个公交站示意图的话,节点上的两个文本就都用得上了。今天就模拟一个地铁站点和大家一起聊聊网络
HT_hightopo
2018/07/09
7670
【移动端网页布局】移动端网页布局基础概念 ② ( 视口 | 布局视口 | 视觉视口 | 理想视口 )
布局视口 - Layout ViewPort 指的是 在 浏览器 中,用于 显示文档的区域大小和位置。它是指 网页中可见部分的大小,即浏览器窗口中显示的内容大小。
韩曙亮
2023/04/24
1.4K0
【移动端网页布局】移动端网页布局基础概念 ② ( 视口 | 布局视口 | 视觉视口 | 理想视口 )
[答疑]EA怎么隐藏图上的页面分割线
阿厉 2019-5-24 13:52 问下,这个工作区域的边界线,在哪个设置里面可以设置,去掉 UMLChina潘加宇: 页面设置 不是工作区域,页面设小了。 阿厉: 设的A4,13的版本,我记得设
用户6288414
2019/09/26
1.3K0
[答疑]EA怎么隐藏图上的页面分割线
Confluence 6 为登录失败编辑,禁用和配置验证码
https://www.cwiki.us/display/CONF6ZH/Configuring+Captcha+for+Failed+Logins
HoneyMoose
2019/01/30
1.3K0
Confluence 6 为登录失败编辑,禁用和配置验证码
在任意拓扑图上学习
paper:Learning on Arbitrary Graph Topologies via Predictive Coding
CreateAMind
2023/09/12
2270
在任意拓扑图上学习
在地图上绘制路线图
最近做个项目,官方给了车的一些经纬度数据,为了看的更清楚,需要把数据标注在地图上 想到了两套方案,第一种采用python的folium库 结果遇到问题,数据一多,绘画出来的速度很慢,而且它的某JS插件还有问题,可能要访问国外网站 最后采用百度地图API+前端实现
zstar
2022/06/14
8520
在地图上绘制路线图
PowerBI 工具提示 在图上显示图
很多人会好奇的是,这个页面如何随着其他的图而变呢?其道理在于它会受到其他图的筛选。
BI佐罗
2020/08/20
2.3K0
海康威视的进化战争
早在2018年,当华为、阿里两大跨界巨头毫无征兆地杀进安防市场时,雄踞行业龙头多年的海康威视已悄然走出了自己的舒适区,对其它行业进行探索。
数据猿
2022/03/16
6520
海康威视的进化战争
点击加载更多

相似问题

在抽象类中模拟受保护的方法

34

模拟基类受保护的属性

10

如何模拟从抽象类继承的受保护方法

47

区分属性受保护和设置者受保护

25

如何模拟从抽象类继承的受保护子类方法?

42
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文