小编can*_*dry的帖子

为什么在这个python片段中允许使用分号?

Python不保证使用分号来结束语句.那么为什么这个(下面)允许?

import pdb; pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

python

148
推荐指数
9
解决办法
11万
查看次数

为什么提出异常会产生副作用?

根据维基百科的副作用条目,提出异常构成副作用.考虑一下这个简单的python函数:

def foo(arg):
    if not arg:
        raise ValueError('arg cannot be None')
    else:
        return 10
Run Code Online (Sandbox Code Playgroud)

调用它将foo(None)始终遇到异常.相同的输入,相同的输出.它是参考透明的.为什么这不是一个纯粹的功能?

functional-programming side-effects

43
推荐指数
5
解决办法
7379
查看次数

我可以覆盖一个namedtuple的字符串形式吗?

例如:

>>> Spoken = namedtuple("Spoken", ["loudness", "pitch"])
>>> s = Spoken(loudness=90, pitch='high')
>>> str(s)
"Spoken(loudness=90, pitch='high')"
Run Code Online (Sandbox Code Playgroud)

我想要的是:

>>> str(s)
90
Run Code Online (Sandbox Code Playgroud)

那就是我希望字符串表示显示响度属性.这可能吗 ?

python

37
推荐指数
2
解决办法
8677
查看次数

在golang中使用空接口或空结构作为映射值的任何区别

我正在使用此构造来模拟一组

type MyType uint8
map[MyType]interface{}
Run Code Online (Sandbox Code Playgroud)

然后我添加所有键并将它们映射到nil.

我了解到它也可以使用

map[MyType]struct{}
Run Code Online (Sandbox Code Playgroud)

使用空结构的任何好处interface{}.

go

26
推荐指数
2
解决办法
9679
查看次数

如何在另一个列表的前面插入列表?

>>> a = ['foo.py']
>>> k = ['nice', '-n', '10'] 
>>> a.insert(0, k)
>>> a
[['nice', '-n', '10'], 'foo.py']
Run Code Online (Sandbox Code Playgroud)

我希望列出kfoo.py子列表相同的级别,而不是子列表.

python

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

django classonlymethod和python classmethod有什么区别?

为什么Django需要引入装饰器classonlymethod?为什么不能重用python classmethod

python django

23
推荐指数
1
解决办法
4290
查看次数

我可以重定向到django TemplateView中的另一个URL吗?

我有一个url映射,如下所示:

url(r'^(?P<lang>[a-z][a-z])/$', MyTemplateView.as_view()),
Run Code Online (Sandbox Code Playgroud)

我接受的lang捕获组只有几个值,即:(1)ro和(2)en.如果用户键入http://server/app/fr/,我想将其重定向到默认值http://server/app/en/.

我怎么能这样做,因为MyTemplateView只有一个方法可以返回字典?

def get_context_data(self, **kwargs):
    return { 'foo': 'blah' }
Run Code Online (Sandbox Code Playgroud)

django django-views

20
推荐指数
2
解决办法
8011
查看次数

在golang中对常量进行无类型操作意味着什么?

规范说:

常量可以是打字的或无类型的

我对我的理解有点怀疑.在规范中考虑这个例子:

const l = "hi"             // l == "hi"  (untyped string constant)
const m = string(k)        // m == "x"   (type string)
Run Code Online (Sandbox Code Playgroud)

规范说:

常量可以通过常量声明或转换显式赋予类型,或者在变量声明或赋值中使用时隐式赋值,或者作为表达式中的操作数使用

通过这个陈述,为什么不l打字,因为它显然是一个不变的声明?

另一个例子更清楚这种行为

type Foo string
func f(a Foo) {}

func main() {
  f("sarkozy")

  const t = "julie gayet"
  f(t)

  s := "hollande"

  //compile error
  // f(s)

  f(Foo(s)) // ok
}
Run Code Online (Sandbox Code Playgroud)

f("sarkozy")编译的原因是由于规范中的可分配性的这一陈述?

x是一个无类型常量,可由类型T的值表示.

我的论点如下:

  • "萨科齐"是一个无用的文字.
  • 因此,"sarkozy"可以表示Foo我可以像这样强制类型 Foo("sarkozy")
  • f(s)失败,因为s不是无类型的.

go

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

如何将namedtuple转换为值列表并保留属性的顺序?

from collections import namedtuple
Gaga = namedtuple('Gaga', ['id', 'subject', 'recipient'])
g = Gaga(id=1, subject='hello', recipient='Janitor')
Run Code Online (Sandbox Code Playgroud)

我希望能够获得此列表(保留属性的顺序):

[1, 'hello', 'Janitor']
Run Code Online (Sandbox Code Playgroud)

我可以手动创建这个列表,但必须有一个更简单的方法.我试过了:

g._asdict().values()
Run Code Online (Sandbox Code Playgroud)

但属性不是我想要的顺序.

python

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

如何正常关闭在docker中运行的服务器

我通过docker文件中的ENTRYPOINT配置启动mongodb.它工作正常.但是,当我执行时:

docker stop <containerid>
Run Code Online (Sandbox Code Playgroud)

它似乎是在向流程发送SIGTERM.这意味着mongod.lock文件未被清除.如何正常关闭正在运行的docker容器,以便将正确的信号发送到docker中运行的进程?

shutdown mongodb docker

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