我必须从一个可能为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?
我有一个像这样的json字符串:
json = "{'run': 'function() { console.log('running...'); }'}"
Run Code Online (Sandbox Code Playgroud)
如何在json字符串中运行该函数?
有没有人有这方面的经验?我有一个扭曲的应用程序.客户端连接到服务器.我添加了一个功能,以便如果客户端连接到服务器,但是已经有来自该IP地址的客户端运行,它会断开新客户端的连接.
偶尔,我会关闭一台客户端计算机(或者说是VM),而无需手动关闭Python程序.当我这样做,偶尔但经常,服务器没有检测到任何断开连接.当计算机重新启动并尝试重新连接时,服务器会坚持已经存在来自该IP的连接.到目前为止我找到的唯一解决方案是重启服务器.
可能是奇怪的网络事情没有断开连接?扭曲的bug?
我99%肯定这不是我的代码处理断开连接的错误.我的代码设置connectionLost为每当连接丢失时调用,包括大多数关闭机器的情况,并且它记录一个字符串,说明断开连接或发生异常,如果发生了奇怪的事情.这些东西都没有出现在日志中.
有没有办法让计算机上的Python程序在重启时运行?通用解决方案很好,但特别是我在Windows上.
我安装了最新的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并让它们表现得很好?
什么是一个完整的例子,从无到有,在内存中以位图结束.ttf,使用本机Windows API 打开特定文件并使用该字体呈现一些文本?我目前正在通过Windows API,所以这是我和其他stackoverflow之间的竞争.
你知道你能做到吗?
>>> [(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) 为什么会发生这种情况?
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 window,cPickle它可以很好地加载模块,但是在加载时似乎不起作用。
有关一些可能相关的其他信息:
我保存文件的模块在中project1\MODULE\submodule\main.py。该window模块project1\MODULE\window.py。main.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以某种方式将附加内容弄乱吗?
假设我有一个装饰器,它导致函数打印出任何异常并返回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)描述(装饰器让程序员知道函数的属性)?
我想让一个特定的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 ×9
winapi ×3
windows ×3
coding-style ×2
32bit-64bit ×1
64-bit ×1
decorator ×1
fonts ×1
for-loop ×1
idioms ×1
import ×1
javascript ×1
json ×1
module ×1
networking ×1
obfuscation ×1
pickle ×1
pywin32 ×1
rendering ×1
restart ×1
shutdown ×1
twisted ×1
windows-7 ×1