小编Cla*_*diu的帖子

x或y:可接受的成语,还是混淆?

我必须从一个可能为None的变量中提取值,并考虑到一些默认值.我先写了这段代码:

if self.maxTiles is None:
    maxX, maxY = 2, 2
else:
    maxX, maxY = self.maxTiles
Run Code Online (Sandbox Code Playgroud)

然后我意识到我可以缩短它:

maxX, maxY = self.maxTiles if self.maxTiles is not None else (2, 2)
Run Code Online (Sandbox Code Playgroud)

但后来我意识到这可能是最简洁易读的:

maxX, maxY = self.maxTiles or (2, 2)
Run Code Online (Sandbox Code Playgroud)

后者是可接受的,还是过于hackish?

python obfuscation coding-style idioms

4
推荐指数
1
解决办法
384
查看次数

运行json字符串函数

我有一个像这样的json字符串:

json = "{'run': 'function() { console.log('running...'); }'}"
Run Code Online (Sandbox Code Playgroud)

如何在json字符串中运行该函数?

javascript json

4
推荐指数
1
解决办法
4703
查看次数

扭曲不检测客户端断开连接

有没有人有这方面的经验?我有一个扭曲的应用程序.客户端连接到服务器.我添加了一个功能,以便如果客户端连接到服务器,但是已经有来自该IP地址的客户端运行,它会断开新客户端的连接.

偶尔,我会关闭一台客户端计算机(或者说是VM),而无需手动关闭Python程序.当我这样做,偶尔但经常,服务器没有检测到任何断开连接.当计算机重新启动并尝试重新连接时,服务器会坚持已经存在来自该IP的连接.到目前为止我找到的唯一解决方案是重启服务器.

可能是奇怪的网络事情没有断开连接?扭曲的bug?

我99%肯定这不是我的代码处理断开连接的错误.我的代码设置connectionLost为每当连接丢失时调用,包括大多数关闭机器的情况,并且它记录一个字符串,说明断开连接或发生异常,如果发生了奇怪的事情.这些东西都没有出现在日志中.

python networking network-programming twisted

4
推荐指数
1
解决办法
1727
查看次数

从python重新启动本地计算机

有没有办法让计算机上的Python程序在重启时运行?通用解决方案很好,但特别是我在Windows上.

python windows winapi shutdown restart

4
推荐指数
3
解决办法
2万
查看次数

64位python 2.5/2.6 + windows 7"导入套接字"DLL加载错误

我安装了最新的64位Python 2.5.我运行shell,尝试import socket并得到:

>>> import socket
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\python25\lib\socket.py", line 45, in <module>
    import _socket
ImportError: DLL load failed with error code 193
Run Code Online (Sandbox Code Playgroud)

我尝试使用64位Python 2.6.6,并得到:

>>> import socket
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\python26-64\lib\socket.py", line 46, in <module>
    import _socket
ImportError: DLL load failed: %1 is not a valid Win32 application.
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?(我仔细检查过,是的,操作系统是64位).

更新:我也在这台机器上安装了32位python ..如果这是一个冲突,我怎么能安装这两个版本的python并让它们表现得很好?

python windows 64-bit 32bit-64bit windows-7

4
推荐指数
1
解决办法
7873
查看次数

python:使用windows api使用ttf字体呈现文本

什么是一个完整的例子,从无到有,在内存中以位图结束.ttf,使用本机Windows API 打开特定文件并使用该字体呈现一些文本?我目前正在通过Windows API,所以这是我和其他stackoverflow之间的竞争.

python windows winapi fonts rendering

4
推荐指数
1
解决办法
2774
查看次数

python:单行笛卡儿积分for循环

你知道你能做到吗?

>>> [(x,y) for x in xrange(2) for y in xrange(5)]
[(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (1, 0), (1, 1), (1, 2), (1, 3), (1, 4)]
Run Code Online (Sandbox Code Playgroud)

它很整洁.是否存在for循环版本或只能为列表推导执行此操作?

编辑:我认为我的问题被误解了.我想知道是否有特殊的语法:

for x in xrange(2) <AND> y in xrange(5):
    print "do stuff here"
    print "which doesn't fit into a list comprehension"
    print "like printing x and y cause print is a statement", x, y
Run Code Online (Sandbox Code Playgroud)

我能做到这一点,但似乎有点重复:

for x,y in ((x,y) for x in xrange(2) for y in xrange(5)):
    print …
Run Code Online (Sandbox Code Playgroud)

python for-loop list-comprehension

4
推荐指数
2
解决办法
4608
查看次数

pickle无法导入存在的模块?

为什么会发生这种情况?

import window; print "LOADED"; data = cPickle.loads(data)
Run Code Online (Sandbox Code Playgroud)

结果是:

LOADED
Traceback (most recent call last):
...
    import window; print "LOADED"; data = cPickle.loads(data)
exceptions.ImportError: No module named window
Run Code Online (Sandbox Code Playgroud)

如果可以的话import windowcPickle它可以很好地加载模块,但是在加载时似乎不起作用。

有关一些可能相关的其他信息:

我保存文件的模块在中project1\MODULE\submodule\main.py。该window模块project1\MODULE\window.pymain.py开始:

import sys
sys.path.append("..\\..")
sys.path.append("..")
...
import window
Run Code Online (Sandbox Code Playgroud)

我尝试从中加载的模块位于in project2\project2sub\MODULE\data.py,没有弄乱sys路径。

MODULE在两种情况下都是相同的:我要加载的模块是project2\project2sub\MODULE\window.py

可能sys.path以某种方式将附加内容弄乱吗?

python import module pickle

4
推荐指数
2
解决办法
7522
查看次数

python:装饰器名称应该是动作还是描述?

假设我有一个装饰器,它导致函数打印出任何异常并返回None,如果发生异常,而不是失败.假设这是个好主意,那么首选的命名风格是什么?

一个)

@ignore_exceptions
def foobar(a, b, c):
    raise ValueError("This function always fails...")
Run Code Online (Sandbox Code Playgroud)

b)

@ignores_exceptions
def foobar(a, b, c):
    raise ValueError("This function always fails...")
Run Code Online (Sandbox Code Playgroud)

那就是:它应该a)是一个命令(装饰器告诉函数做一些不同的事情),还是b)描述(装饰器让程序员知道函数的属性)?

python coding-style decorator

4
推荐指数
1
解决办法
100
查看次数

EnumChildWindows无法在pywin32中运行

我想让一个特定的IE实例的孩子看看是否有任何弹出窗口.

我制作了一个弹出窗口的.html页面.弹出窗口的标题是"来自网页的消息",因为它始终适用于此版本的IE.

我可以从子窗口获取父级:

>>> child_handle = 15208472
>>> win32gui.GetWindowText(child_handle)
'Message from webpage'
>>> win32gui.GetParent(child_handle)
33230502
>>> parent_handle = 33230502
>>> win32gui.GetWindowText(parent_handle)
'pop-up example - Windows Internet Explorer'
Run Code Online (Sandbox Code Playgroud)

但是,似乎我无法从父级获取子窗口:

>>> def all_ok(hwnd, param): return True
>>> win32.EnumChildWindows(parent_handle, all_ok, None)
>>>
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

python winapi pywin32

4
推荐指数
1
解决办法
3752
查看次数