小编Sco*_*ths的帖子

Python中是否存在元组数据结构

我希望有一个3项组合,如标签,名称和值列表(数组)什么是存储此类事物的最佳数据结构.

目前我正在使用字典,但它只允许2个项目,但易于遍历使用

for k, v in dict.iteritems():
Run Code Online (Sandbox Code Playgroud)

我们可以有类似的东西:

for k, v, x in tuple.iteritems():
Run Code Online (Sandbox Code Playgroud)

python tuples

5
推荐指数
2
解决办法
2269
查看次数

如何将整数转换为可变长度字节串?

我想转换一个整数(intlong)一个big-endian字节字符串.字节串必须是可变长度的,因此只使用最小字节数(前面数据的总长度是已知的,因此可以推断出可变长度).

我目前的解决方案是

import bitstring

bitstring.BitString(hex=hex(456)).tobytes()
Run Code Online (Sandbox Code Playgroud)

这显然取决于机器的字节顺序并给出错误的结果,因为0位是追加而没有前置.

有没有人知道如何做到这一点,而不做任何关于一个长度或结束的假设int

python byte integer bit-manipulation endianness

5
推荐指数
2
解决办法
5821
查看次数

如何将UUID打包到Python中的结构中?

我有一个UUID,我正在考虑使用UUID.int打包到一个结构中,它将其转换为128位整数.但是没有一个struct format字符足以存储它,如何去做呢?

示例代码:

s = struct.Struct('L')
unique_id = uuid.uuid4()    
tuple = (unique_id.int)
packed = s.pack(*tuple)
Run Code Online (Sandbox Code Playgroud)

问题是,结构格式'L'只有4个字节...我需要存储16.将它存储为32字符串有点多.

python uuid struct pack

5
推荐指数
2
解决办法
4705
查看次数

如何断言N个给定参数中的零或只有一个被传递

我有这样的定义

def bar(self, foo=None, bar=None, baz=None):
    pass
Run Code Online (Sandbox Code Playgroud)

我想确保最多通过foo,bar,baz中的一个.我可以

if foo and bar:
    raise Ex()

if foo and baz:
    raise Ex()
....
Run Code Online (Sandbox Code Playgroud)

但是有一些更简单的东西.

python

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

如何从旧的Python版本中隐藏不兼容的代码?

我正在为一个兼有a *args**kwargs参数的函数编写单元测试.此函数的合理用例是在*argsargment 之后使用关键字参数,即表单

def f(a, *b, **c):
    print a, b, c

f(1, *(2, 3, 4), keyword=13)
Run Code Online (Sandbox Code Playgroud)

现在这只在Python 2.6中变得合法 ; 在早期版本中,上面的行是语法错误,因此甚至不会编译为字节码.

我的问题是: 我如何测试较新的Python版本中提供的功能,并且仍然可以为较旧的Python版本运行测试?

我应该指出,函数本身适用于早期的Python版本,只有一些调用是Python 2.6之前的语法错误.我看过检查Python版本的各种方法不适用于此,因为它没有超过编译阶段.

如果可能的话,我宁愿不必将测试分成多个文件.

python unit-testing

3
推荐指数
1
解决办法
187
查看次数

Python 3.1内联除法

我不知道这是否是3.1中的错误,但是如果我没记错,"inline"除法在3k之前的版本中就像这样:

Python 3.1 (r31:73574, Jun 26 2009, 20:21:35) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> class A:
...     def __init__(self, x):
...             self.x = x
...     def __idiv__(self, y):
...             self.x /= y
...
>>> a = A(5)
>>> a /= 2
Run Code Online (Sandbox Code Playgroud)

但是,3.1给了我这个:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for /=: 'A' and 'int'
Run Code Online (Sandbox Code Playgroud)

......或者我错过了什么?

python python-3.x

3
推荐指数
1
解决办法
770
查看次数

Windows XP,Python 2.7和Pygame

如何让pygame在Windows XP下使用Python 2.7?我想我需要编译它,但我不确定.

谢谢.

python windows-xp pygame python-2.7

3
推荐指数
1
解决办法
3545
查看次数