小编Bri*_*and的帖子

如何在Python中将列表扩展为函数参数

是否有语法允许您将列表扩展为函数调用的参数?

例:

# Trivial example function, not meant to do anything useful.
def foo(x,y,z):
   return "%d, %d, %d" %(x,y,z)

# List of values that I want to pass into foo.
values = [1,2,3]

# I want to do something like this, and get the result "1, 2, 3":
foo( values.howDoYouExpandMe() )
Run Code Online (Sandbox Code Playgroud)

python arguments

138
推荐指数
4
解决办法
9万
查看次数

来自字符串的Python readline()?

在python中,是否有内置的方法在字符串上执行readline()?我有大量的数据,并且想要剥离第一对没有在整个字符串上执行split()的几行.

假设的例子:

def handleMessage(msg):
   headerTo  = msg.readline()
   headerFrom= msg.readline()
   sendMessage(headerTo,headerFrom,msg)

msg = "Bob Smith\nJane Doe\nJane,\nPlease order more widgets\nThanks,\nBob\n"
handleMessage(msg)
Run Code Online (Sandbox Code Playgroud)

我希望这导致: sendMessage("Bob Smith", "Jane Doe", "Jane,\nPlease order...")

我知道编写一个这样做的类会很容易,但是如果可能的话,我正在寻找内置的东西.

编辑:Python v2.7

python

31
推荐指数
4
解决办法
8万
查看次数

什么和\ b做什么?

我期待这段简单的代码

printf("foo\b\tbar\n");
Run Code Online (Sandbox Code Playgroud)

用"\ t"替换"o"并产生以下输出

fo     bar
Run Code Online (Sandbox Code Playgroud)

(假设每8个字符发生制表位).相反,我得到了

foo    bar
Run Code Online (Sandbox Code Playgroud)

似乎我的shell将\ b解释为"将游标移回一个位置"并将\ t解释为"将光标移动到下一个制表位".这种行为是否特定于我正在运行代码的shell?我应该期望不同系统有不同的行为吗?

c printf

30
推荐指数
2
解决办法
22万
查看次数

Python与......以及自定义上下文管理器

我在Python中编写了一个简单的上下文管理器来处理单元测试(并尝试学习上下文管理器):

class TestContext(object):
    test_count=1
    def __init__(self):
        self.test_number = TestContext.test_count
        TestContext.test_count += 1

    def __enter__(self):
        pass

    def __exit__(self, exc_type, exc_value, exc_traceback):
        if exc_value == None:
            print 'Test %d passed' %self.test_number
        else:
            print 'Test %d failed: %s' %(self.test_number, exc_value)
        return True
Run Code Online (Sandbox Code Playgroud)

如果我按如下方式编写测试,一切正常.

test = TestContext()
with test:
   print 'running test %d....' %test.test_number
   raise Exception('this test failed')
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用... as,我不会获得对TestContext()对象的引用.运行这个:

with TestContext() as t:
    print t.test_number
Run Code Online (Sandbox Code Playgroud)

引发异常'NoneType' object has no attribute 'test_number'.

我哪里错了?

python

29
推荐指数
3
解决办法
5314
查看次数

是否有std :: lock_guard <std :: mutex> lock(m)的简写?

究竟问题是什么.在C++中,理想情况下是11,但是对于14及更高版本也很好奇,有一个简写语法:

std::mutex someMutex;
std::lock_guard<std::mutex> lg(someMutex);
Run Code Online (Sandbox Code Playgroud)

理想情况下,如果我想要更改为a,则可以推断出互斥体的类型以避免重构std::recursive_mutex.

换句话说,一种方法:

std::mutex someMutex;
std::lock_guard lg(someMutex);
Run Code Online (Sandbox Code Playgroud)

要么

auto lg = make_lock_guard(someMutex);
Run Code Online (Sandbox Code Playgroud)

对于现代C++的所有类型演绎功能,std::lock_guard<std::mutex>每次我想制作一个类型时,进行打字似乎都是多余的.

c++ c++11

28
推荐指数
3
解决办法
1734
查看次数

将参数传递给ajax onreadystatechange回调?

什么是普通的纯javascript(即不是JQuery)将参数传递给匿名onreadystatechange回调的方法?

例如:

function doRequest(){
    /* Get an XMLHttpRequest in a platform independent way */    
    var xhttp = getXmlHttpRequestObject(); 

    var msg="show this message when done"; /* another variable to pass into callback */

     /* How do I pass 'msg' and 'xhttp' into this anonymous function as locals
       named 'x' and 'm'??? */
    xhttp.onreadychangestate=function(x,m)
    {
       if( x.readyState == 4 )
       {
           alert(m);
       }
    }
    /* do the open() and send() calls here.... */
}
Run Code Online (Sandbox Code Playgroud)

javascript ajax

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

分段上传表格:订单有保证吗?

看来,当我使用html表单制作"Content-Type:multipart/form-data"POST请求时,这些字段始终按照HTML中列出的顺序显示.在实践中,所有浏览器都这样做吗?

希望了解这一点的主要动机是,我可以对表单数据进行服务器端验证,而不需要将整个 HTTP请求缓存在RAM中.磁盘第一.

我知道CGI,PHP等通常不会做任何事情直到上传完成.可能是因为RFC 2388第5.5节通过说订单没有定义来解决这个问题.我正在使用高度自定义的thttpd分支,并处理内置于服务器内置的C代码.所以我不关心大多数服务器做什么.

我想知道的是,如果我走出困境并下订单,我会被这个假设烧掉吗?

以此表格为例:

  <form id="formUpload"
        target = "uploadTarget"
        method = "post"
        action = "/bin/upload"
        enctype= "multipart/form-data" >
    <input type="hidden" id="inUser" name="user" />
    <input type="hidden" id="inDest" name="dest"/>
    <input type="file" id="inFile" name="file" />
    <input type="button" value="Upload" onclick="uploadFile();" />
    <iframe id="uploadTarget" name="uploadTarget" src="" style="width:0;height:0;border:0px"/>
  </form>
Run Code Online (Sandbox Code Playgroud)

'uploadFile()'函数将在调用submit()之前填写user和dest字段.我想recv()在整个HTTP请求体之前验证用户和dest服务器端.

html cgi http cross-browser mime-types

21
推荐指数
1
解决办法
4463
查看次数

在类似StringBuilder的C模块中增加多少缓冲区?

在C中,我正在研究一个管理字节缓冲区的"类",允许将任意数据附加到结尾.我现在正在调查自动调整大小,因为底层数组使用调用填充realloc.这对任何使用过Java或C#的人都有意义StringBuilder.我知道如何调整大小.但是,没有任何人有任何建议,与理规定,关于有多少成长与每个调整缓冲区?

显然,在浪费的空间和过多的realloc调用之间存在折衷(这可能导致过度复制).我已经看过一些建议加倍的教程/文章.如果用户设法提供良好的初始猜测,这似乎是浪费.是否值得尝试在平台上舍入到两个或多个对齐大小的幂?

有没有人知道Java或C#在幕后做了什么?

c c# java stringbuilder

18
推荐指数
2
解决办法
1435
查看次数

将FILE*传递给Python/ctypes中的函数

我有一个库函数(用C编写),通过写输出来生成文本FILE *.我想在Python(2.7.x)中使用创建临时文件或管道的代码将其包装,将其传递给函数,从文件中读取结果,并将其作为Python字符串返回.

这是一个简化的例子来说明我的目标:

/* Library function */
void write_numbers(FILE * f, int arg1, int arg2)
{
   fprintf(f, "%d %d\n", arg1, arg2);
}
Run Code Online (Sandbox Code Playgroud)

Python包装器:

from ctypes import *
mylib = CDLL('mylib.so')


def write_numbers( a, b ):
   rd, wr = os.pipe()

   write_fp = MAGIC_HERE(wr)
   mylib.write_numbers(write_fp, a, b)
   os.close(wr)

   read_file = os.fdopen(rd)
   res = read_file.read()
   read_file.close()

   return res

#Should result in '1 2\n' being printed.
print write_numbers(1,2)
Run Code Online (Sandbox Code Playgroud)

我想知道我最好的选择是什么MAGIC_HERE().

我很想使用ctypes并创建一个libc.fdopen()返回Python c_void_t 的包装器,然后将其传递给库函数.我觉得理论上应该是安全的 - 只是想知道这种方法是否存在问题,或者现有的Python主题是否存在解决这个问题的问题.

此外,这将进入一个长期运行的过程(让我们假设"永远"),所以任何泄露的文件描述符将是有问题的.

c python ctypes

10
推荐指数
1
解决办法
1679
查看次数

GCC别名在翻译单元-AKA-之外运行,这甚至是适合这项工作的工具吗?

我正在使用STR32(Cortex-M3)上的FreeRTOS,并使用ST的CMSIS库来引导所有内容.

CMSIS库SVC_Handler在启动".s"文件中定义弱符号.必须在某处重写它才能将ISR置于中断向量表中.FreeRTOS定义vPortSVCHandler,这是我想要处理SVC中断的ISR.

我想使用我的应用程序代码(即没有修改FreeRTOS或CMSIS源代码)将两者"粘合"在一起.我认为别名是工作的正确工具,所以我尝试了这个(在一个单独的源文件main.c中):

void SVC_Handler(void) __attribute__ ((alias ("vPortSVCHandler")));
Run Code Online (Sandbox Code Playgroud)

这导致: error: 'SVC_Handler' aliased to undefined symbol 'vPortSVCHandler'

事实证明,根据GCC文档http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html,为了使用该alias属性,您不能在翻译单元之外别名.所以我想我会尝试extern将符号转换为main.c,如下所示:

extern void vPortSVCHandler( void ) __attribute__ (( naked ));
void SVC_Handler(void) __attribute__ ((alias ("vPortSVCHandler")));
Run Code Online (Sandbox Code Playgroud)

这会产生相同的错误.有什么建议???

我真的想避免修改任何一个库.我知道我可以编写一个SVC_Handler简单调用的函数vPortSVCHandler,但这可能会给ISR增加不必要的开销(可能取决于优化设置).注意:FreeRTOS示例通过自定义启动文件实现此目的.我正在寻找一种方法来从C 我的链接器脚本执行此操作.

  • 编译器版本:gcc版本4.5.2(Sourcery G ++ Lite 2011.03-42)
  • 目标:arm-none-eabi

c gcc cortex-m3 codesourcery freertos

9
推荐指数
1
解决办法
4868
查看次数