小编bal*_*lki的帖子

使用os.environ.setdefault是否安全?

从我的ipython shell中,我在os.environ中看到了一个方法setdefault,但没有记录.http://docs.python.org/library/os.html#os.environ.它是否记录在其他地方?

def setdefault(self, key, failobj=None):
    if key not in self:
        self[key] = failobj
    return self[key]
Run Code Online (Sandbox Code Playgroud)

我可以使用此功能或为这些线写一个包装器吗?

python dictionary environment-variables python-os

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

什么是概念演员的等价物?

考虑class A满足两个概念ConceptAConceptB.让一个函数foo重载两个概念:

void foo(ConceptA& arg);
void foo(ConceptB& arg);
A a;
fun(concept_cast<ConceptA>(a));
Run Code Online (Sandbox Code Playgroud)

注意:此示例使用作为N3701,§5的一部分提出的"Terse Notation"语法

是否存在concept_cast允许用户选择重载的东西?

例如:可以说, ConceptA说T有权有一个成员函数bar() ConceptB说T有权有一个成员函数baz() ,并class A同时具有bar()baz()成员函数

它显然是模棱两可的,但有没有办法明确选择我们static_cast正常的重载?

更新:已接受的答案超过2年.c ++ 17中的任何更新?

c++ c++-concepts c++17

19
推荐指数
1
解决办法
399
查看次数

如何在现有的阻塞库中使用asyncio?

我有很少的阻止功能foo,bar我无法改变那些(一些我无法控制的内部库.与一个或多个网络服务交谈).我如何将其用作异步?我不想做以下事情.

results = []
for inp in inps:
    val = foo(inp)
    result = bar(val)
    results.append(result)
Run Code Online (Sandbox Code Playgroud)

这将是低效的,因为我foo在等待第一个输入时可以调用第二个输入,并且相同bar.如何包装它们,这样它们与ASYNCIO(即新的使用async,await语法)?

让我们假设这些函数是可重入的.即,foo当先前foo正在处理时再次调用是可以的.


更新

用可重复使用的装饰器扩展答案.点击这里举例.

def run_in_executor(f):
    @functools.wraps(f)
    def inner(*args, **kwargs):
        loop = asyncio.get_running_loop()
        return loop.run_in_executor(None, functools.partial(f, *args, **kwargs))

    return inner
Run Code Online (Sandbox Code Playgroud)

python python-3.x async-await python-asyncio python-3.5

19
推荐指数
4
解决办法
6038
查看次数

什么时候不使用`auto &&`?

  auto&& mytup = std::make_tuple(9,1,"hello");
  std::get<0>(mytup) = 42;
  cout << std::get<0>(mytup) << endl;
Run Code Online (Sandbox Code Playgroud)
  1. 从make_tuple返回时是否涉及复制/移动(没有RVO)?
  2. 是否导致未定义的行为?
  3. 我都可以读写通用引用.可以auto&& var = func()总是使用而不是auto var = func()没有复制/移动?

c++ auto c++11 universal-reference

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

通过引用获取std :: map中的对象是否安全?

我有这样的地图

map<int,object> objmap;
object& obj = objmap.find(num)->second;
object& obj2 = objmap[num];
Run Code Online (Sandbox Code Playgroud)

无论我在对象中做出什么样的改变都必须反映在地图上.类似的事情不能在矢量中完成,因为它在需要更多空间时改变对象的位置.在std :: map中执行它是否安全?这是可取的吗?第二个版本给出错误,因为我的对象没有空构造函数.如果我声明一个空构造函数什么都不做,这两行会以同样的方式工作吗?

c++ reference map

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

为什么匿名命名空间中的函数/对象具有外部链接?

为什么匿名命名空间中定义的符号(函数和变量)与static关键字没有内部链接?如果某个功能在外面不可见/可访问,那么外部链接的原因是什么?

c++

16
推荐指数
1
解决办法
2141
查看次数

为什么open()比Python中的file()更好?

可能重复:
Python - 何时使用文件vs打开

从官方python文档,

http://docs.python.org/library/functions.html#file

打开文件时,最好使用open()而不是直接调用此构造函数

但它没有给出理由.

python file

16
推荐指数
1
解决办法
2353
查看次数

如何使用await表达式?

无法弄清楚如何从python 3.5-rc2使用await

>>> async def foo():
...     pass
... 
>>> await foo()
  File "<ipython-input-10-a18cb57f9337>", line 1
    await foo()
            ^
SyntaxError: invalid syntax

>>> c = foo()
>>> await c
  File "<ipython-input-12-cfb6bb0723be>", line 1
    await c
          ^
SyntaxError: invalid syntax

>>> import sys
>>> sys.version
'3.5.0rc2 (default, Aug 26 2015, 21:54:21) \n[GCC 5.2.0]'
>>> del c
RuntimeWarning: coroutine 'foo' was never awaited
>>> 
Run Code Online (Sandbox Code Playgroud)

python python-3.x async-await python-3.5

15
推荐指数
2
解决办法
1万
查看次数

如何在python中选择一个免费的端口号?

可能重复:
在localhost上,如何选择一个空闲端口号?

我的要求与这个问题不同.

在localhost上,如何选择一个免费的端口号?

我正在使用python编写另一个进程的测试设置.另一个进程需要传递一个端口号(比如命令行参数).我无法硬编码一些随机端口号,因为许多用户通常会在同一个盒子中运行相同的测试.现在,如何在python中选择一个自由端口?

编辑:

我不是在python中创建一个套接字.我只需要将一个数字作为命令行参数传递给其他进程.

从DRH的回答中,我可以创建一个虚拟套接字,获取其端口号,关闭它并传递给实际进程.有没有更好的方法来做到这一点?

python

14
推荐指数
1
解决办法
8960
查看次数

带有initializer_list的可选构造函数

这个特殊构造函数采用初始化列表的目的是什么.有人可以举例说明什么时候有用吗?

template <class U, class... Args>
constexpr explicit optional(in_place_t, initializer_list<U> il, Args&&... args);
Run Code Online (Sandbox Code Playgroud)

以上与此有何不同?

template <class... Args> 
constexpr explicit optional(in_place_t, Args&&... args); 
Run Code Online (Sandbox Code Playgroud)

参考:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3793.html#optional.object.ctor

PS不确定是使用c ++ 14还是c ++ 1z标签.我认为应该有c ++技术规范的标签

c++ optional c++14 c++17

13
推荐指数
1
解决办法
787
查看次数