当我遇到这种情况时我可以用javascript来做,我总是认为如果有一个foreach
功能就会方便.通过foreach我的意思是下面描述的功能:
def foreach(fn,iterable):
for x in iterable:
fn(x)
Run Code Online (Sandbox Code Playgroud)
他们只是在每个元素上做它并且没有产生或返回一些东西,我认为它应该是一个内置函数,并且应该比用纯Python编写它更快,但我没有在列表中找到它,或者它只是叫另一个名字?或者我在这里错过了一些观点?
也许我错了,因为调用Python中的函数成本很高,对于这个例子来说绝对不是一个好习惯.该函数不应该是一个out循环,而应该在它的正文中执行循环,如下所示,在许多python的代码建议中已经提到过:
def fn(*args):
for x in args:
dosomething
Run Code Online (Sandbox Code Playgroud)
但我认为foreach仍然受到以下两个事实的欢迎:
草案-ietf-hybi-thewebsocketprotocol-17的 1.3节"开放式握手"中描述Sec-WebSocket-Key
如下:
为了证明接收到握手,服务器必须获取两条信息并将它们组合以形成响应.第一条信息来自| Sec-WebSocket-Key | 客户端握手中的头字段:
Run Code Online (Sandbox Code Playgroud)Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
对于此头字段,服务器必须获取值(如头字段中所示,例如base64编码的[RFC4648]版本减去任何前导和尾随空格),并将其与全局唯一标识符(GUID,[RFC4122]连接起来. ])字符串形式的"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",不太可能被不了解WebSocket协议的网络端点使用.然后在服务器的握手[FIPS.180-2.2002]中返回此串联的SHA-1散列(160位),base64编码(参见[RFC4648]的第4节).
这是我无法理解的事情:为什么不简单地返回代码101?如果正确使用Sec-WebSocket-Key
是为了安全性,或者为了证明它们可以处理websocket请求,那么任何服务器都可以返回预期的密钥,并假装它们是WebSocket服务器.
是否有一种简单而直接的方法可以在Python中的浮点数中添加"one"?
我是说这个:
if a == 0.0143:
a = plus(a)
assert a == 0.0144
def plus(a):
sa = str(a)
index = sa.find('.')
if index<0:
return a+1
else:
sb = '0'*len(sa)
sb[index] = '.'
sb[-1] = 1
return a+float(sb)
Run Code Online (Sandbox Code Playgroud)
这不是我想要的,因为它给了我0.0144000000001.
我想记录每个请求的一些信息以格式化的形式发送到繁忙的http服务器,使用日志模块会创建一些我不想要的东西:
[I 131104 15:31:29 Sys:34]
Run Code Online (Sandbox Code Playgroud)
我想到csv格式,但我不知道如何自定义它,而python有csv模块,但阅读手册
import csv
with open('some.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerows(someiterable)
Run Code Online (Sandbox Code Playgroud)
因为它每次都会打开和关闭一个文件,我担心这样会降低整个服务器的性能,我该怎么办?
使用pymysql连接到mysql,让程序运行很长时间,例如,晚上离开办公室并在第二天早上回来.在此期间,对此应用程序没有任何操作.现在进行数据库提交会产生此错误.
File "/usr/local/lib/python3.3/site-packages/pymysql/cursors.py", line 117, in execute
self.errorhandler(self, exc, value)
File "/usr/local/lib/python3.3/site-packages/pymysql/connections.py", line 189, in defaulterrorhandler
raise errorclass(errorvalue)
pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')
Run Code Online (Sandbox Code Playgroud)
重新启动网络服务器(龙卷风),没关系.为什么如果长时间离开会得到这个错误?
龙卷风服务器默认没有做favicon.ico,所以我总是得到这些信息
[W 130626 10:38:16 web:1514] 404 GET /favicon.ico (192.168.1.57) 0.57ms
Run Code Online (Sandbox Code Playgroud)
我以各种方式使用web.staticfilehandler包括源代码的示例,并且无法使其工作,我得到的工作如下所示.
handlers = [
(r'/favicon.ico', tornado.web.StaticFileHandler,dict(url='/static/favicon.ico',permanent=False)),
(r'/static/(.*)', tornado.web.StaticFileHandler, {"path": "plserver"}),
]
Run Code Online (Sandbox Code Playgroud)
我觉得如此倾倒,我必须重定向它,不能确定它会在现实世界的网页上工作.
我在与Python 3和Linux服务器一起使用Tornado时,在编辑和保存一些文本或XML文件时,我希望Tornado重新启动。我检查了文档,并在此处找到自动重载模块和监视功能。
看来它仅适用于pyo文件。如果要在修改某个URI后重新加载它,该怎么办?
我有一个名为 CacheObject 的类,许多类都从它扩展而来。
现在我需要在这个班级的所有班级上添加一些共同的东西,所以我写了这个
class CacheObject(object):
def __init__(self):
self.updatedict = dict()
Run Code Online (Sandbox Code Playgroud)
但是子类没有获得 updatedict 属性。我知道在 python 中调用 super init 函数是可选的,但是有没有一种简单的方法可以强制所有它们添加 init 而不是遍历所有类并逐一修改它们?
在用另一个程序修改后切换回PyCharm中打开的文件时,PyCharm不会立即弹出一条消息,询问您是要从磁盘重新加载文件还是粘贴到内存中的版本(与其他编辑器不同)我已经习惯了.
它所做的就是在顶部显示一个带有微小重装按钮的小条; 在您尝试保存文件之前,弹出消息不会显示(到时为止已经太晚了).
我研究了一下; 但找不到开关.如何设置Pycharm来做我想要的呢?(当您尝试使用未保存的更改关闭文件时,解决方案不应禁用弹出的保存对话框窗口.)
PyCharm的小消息栏:
预期行为的示例:
关于websocket协议,您可以从这里阅读详细信息,http://tools.ietf.org/html/rfc6455#section-5.3
在面具部分,它说:
掩码密钥是客户端随机选择的32位值.
在准备屏蔽帧时,客户端必须
从允许的32位值中选择一个新的屏蔽密钥.掩蔽密钥需要
不可预测; 因此,掩蔽密钥必须从强大的熵源导出,并且给定帧的掩蔽密钥不能
使服务器/代理很容易预测
后续帧的掩蔽密钥.屏蔽密钥的不可预测性
对于防止恶意应用程序的作者选择出现在线路上的字节至关重要.RFC 4086 [RFC4086]讨论了为安全敏感
应用程序提供合适的熵源的原因.
我不明白为什么掩码键必须是不可预测的,更不用说掩码真的是必要的吗?因为你每次都发送它,嗅探器可以得到它并轻松解密它.我能想到的唯一有用的东西是它的首先使playload数据对人类不可读,并且花费更多时间让服务器处理接收