假设我有一个list或tuple包含数字的类型long long,
x = [12974658, 638364, 53637, 63738363]
Run Code Online (Sandbox Code Playgroud)
如果想struct.pack单独使用它们,我必须使用
struct.pack('<Q', 12974658)
Run Code Online (Sandbox Code Playgroud)
或者如果我想做多个,那么我必须像这样明确地提到它
struct.pack('<4Q', 12974658, 638364, 53637, 63738363)
Run Code Online (Sandbox Code Playgroud)
但是,我如何在声明中list或tuple内部插入项目struct.pack.我尝试使用这样的for循环.
struct.pack('<4Q', ','.join(i for i in x))
Run Code Online (Sandbox Code Playgroud)
得到错误说expected string, int found,所以我将包含类型的列表转换int为str,现在包装它们变得复杂得多.因为整个列表被转换为字符串(就像一个句子).
截至目前我正在做一些事情
binary_data = ''
x = [12974658, 638364, 53637, 63738363]
for i in x:
binary_data += struct.pack('<Q', i)
Run Code Online (Sandbox Code Playgroud)
我打开包装就像
struct.unpack('<4Q', binary_data)
Run Code Online (Sandbox Code Playgroud)
我的问题:有没有更好的方法,比如我可以直接指出list或tuple在struct.pack声明中,或者可能是一个班轮?
当我试图弄清楚在Python中使用imp.load_module时,我得到了以下代码(原始页面).这是我第一次看到在Python中使用*,有些指针就像是东西吗?
提前致谢
import imp
import dbgp
info = imp.find_module(modname, dbgp.__path__)
_client = imp.load_module(modname, *info)
sys.modules["_client"] = _client
from _client import *
del sys.modules["_client"], info, _client
Run Code Online (Sandbox Code Playgroud) 所以我试图使用一个返回值的函数,但我希望这些值返回到一个不同的函数.我需要的一个例子如下.
def returner():
x=1
y=2
z=3
return x,y,z
def tester(arg1,arg2,arg3):
print arg1,arg2,arg3
tester(returner())
Run Code Online (Sandbox Code Playgroud)
我想要它做的是打印1,2,3然而我无法用它来做这件事,因为它说"测试者需要3个参数,1个给定." 我有什么遗失或者这是不可能的吗?
这只是问题的一部分.它有错误,在运行它时缺少1个必需的位置参数'mm'.我知道问题是它像time_to_minutes((h,mm)一样运行,我能做些什么让它像time_to_minutes(h,mm)一样运行?
def time_to_minutes(h,mm):
time = h*60 + mm
return time
def extract_time(time):
h=int(time[:-3])
mm=int(time[-2:])
return h,mm
def time_between(a,b):
first = time_to_minutes(extract_time(a))
return first
Run Code Online (Sandbox Code Playgroud)