小编sou*_*eck的帖子

PEP 8,为什么关键字参数中的'='周围没有空格或默认参数值?

为什么PEP 8建议=在关键字参数或默认参数值中没有空格

这与=Python代码中每隔一次出现的推荐空格不一致吗?

怎么:

func(1, 2, very_long_variable_name=another_very_long_variable_name)
Run Code Online (Sandbox Code Playgroud)

优于:

func(1, 2, very_long_variable_name = another_very_long_variable_name)
Run Code Online (Sandbox Code Playgroud)

任何由Python的BDFL讨论/解释的链接都将受到赞赏.

记住,这个问题更多的是关于kwargs而不是默认值,我只是使用了PEP 8中的措辞.

我不是在征求意见.我在问这个决定背后的原因.这更像是问我为什么要在C程序中使用{if语句相同的行,而不是我是否应该使用它.

python coding-style pep8

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

仅使用两个操作将数组转换为已排序的数组

我在一个在线论坛上发现了这个问题:真的对如何解决这个问题感兴趣:

给定正整数的数组A. 以最低成本将其转换为排序数组.唯一有效的操作是:
1)减少成本= 1
2)使用cost = value of element从数组中完全删除元素

这是一家面向技术公司的面试问题

sorting algorithm

26
推荐指数
1
解决办法
3656
查看次数

Python 2.7美丽的汤Img Src Extract

for imgsrc in Soup.findAll('img', {'class': 'sizedProdImage'}):
    if imgsrc:
        imgsrc = imgsrc
    else:
        imgsrc = "ERROR"

patImgSrc = re.compile('src="(.*)".*/>')
findPatImgSrc = re.findall(patImgSrc, imgsrc)

print findPatImgSrc

'''
<img height="72" name="proimg" id="image" class="sizedProdImage" src="http://imagelocation" />
Run Code Online (Sandbox Code Playgroud)

这就是我想从中提取的内容,我得到了:

findimgsrcPat = re.findall(imgsrcPat, imgsrc)
File "C:\Python27\lib\re.py", line 177, in findall
    return _compile(pattern, flags).findall(string)
TypeError: expected string or buffer
Run Code Online (Sandbox Code Playgroud)

"""

python beautifulsoup

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

使用var foo = function foo(){}; 表达式在IE <9中创建内存泄漏?

我知道这种形式:

var foo = function bar() {};
Run Code Online (Sandbox Code Playgroud)

bar名称泄漏到封闭范围并创建两个函数jscript.

怎么样:

var foo = function foo() {};
Run Code Online (Sandbox Code Playgroud)

它仍然将名称泄漏到封闭范围,但无论如何它都在那里(thx to var foo).

我知道它将在整个范围内定义,但它会创建两个函数并立即取消引用/销毁其中一个或者这仍然导致泄漏吗?

在这种情况下:

var bar = function() {
    foo();
    var foo = function foo() {};
}
Run Code Online (Sandbox Code Playgroud)

我们里面会有两个函数对象bar()吗?

编辑

好吧,它肯定会创建两个函数对象,现在的问题是:命名定义创建的函数是否var foo在行之后被GC解除引用并清除,因此foo在上面的代码中,任何时刻都只有一个"实时" 实例?

或IE将IE永远悬空,因为没有办法"解除引用" foo定义创建的内容,它甚至不应该首先出现在那里?

javascript internet-explorer jscript

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

start-stop-daemon和python

我正在尝试使用start-stop-daemon启动python脚本:

sudo /sbin/start-stop-daemon --start --pidfile /home/loop.pid \ 
--user www-data --group www-data -b --make-pidfile --chuid www-data \
--exec /usr/bin/python /home/loop.py --verbose
Run Code Online (Sandbox Code Playgroud)

但我的进程中没有python脚本.我做错了什么?

loop.py:

import time
while True:
    print "working..."
    time.sleep(3)
Run Code Online (Sandbox Code Playgroud)

python cron start-stop-daemon

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

如何让MonadRandom成为Functor?

似乎来自random-fu包的MonadRandom不是Functor,因为我得到的错误如下:

Could not deduce (Functor m) arising from a use of ‘_1’
from the context (MonadRandom m)
Run Code Online (Sandbox Code Playgroud)

我尝试添加以下代码:

instance Functor MonadRandom where
    fmap = liftM

instance Applicative MonadRandom where
    pure  = return
    (<*>) = ap
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

The first argument of ‘Functor’ should have kind ‘* -> *’,
  but ‘MonadRandom’ has kind ‘(* -> *) -> Constraint’
In the instance declaration for ‘Functor MonadRandom’

The first argument of ‘Applicative’ should have kind ‘* -> *’,
  but ‘MonadRandom’ has kind ‘(* -> …
Run Code Online (Sandbox Code Playgroud)

monads haskell

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

什么是更好的做法?保护/吸气?

如果我有一个继承自另一个类的类,并且只有这个类必须使用某个变量,这是更好的做法吗?让所述变量在基类中被"保护",或者将其变为私有并为其提供受保护的getter?

我听说过相互矛盾的事情.我的老师告诉我总是使用吸气剂,而其他人告诉我,在任何级别使用吸气剂都会发现糟糕的程序设计.真正的答案是什么?我觉得两者都是不合逻辑的极端.

另外,如果getter和setter是糟糕的程序设计,为什么呢?

是否有任何资源可以教会我如何构建代码?

c++ oop

8
推荐指数
1
解决办法
3047
查看次数

我如何检查Python的类层次结构?

假设我有一个类X,我如何检查哪个是基类/类,以及它们的基类/类等?

我正在将Eclipse与PyDev一起使用,例如对于Java,您可以在类名称上键入CTRL + T并查看层次结构,如:

java.lang.Object
   java.lang.Number
       java.lang.Integer

Python有可能吗?

如果在Eclipse PyDev中不可能,我在哪里可以找到这些信息?

python inheritance class pydev hierarchy

8
推荐指数
3
解决办法
3695
查看次数

clojure :(应用fn coll)vs(应用#(应用fn%&)coll)

我正在通过labrepl工作,我看到了一些遵循这种模式的代码:

;; Pattern
(apply #(apply f %&) coll)

;; Concrete example
user=> (apply #(apply + %&) [1 2 3 4])
10
Run Code Online (Sandbox Code Playgroud)

这似乎等同于这种模式:

;; Pattern
(apply f coll)

;; Concrete example
user=> (apply + [1 2 3 4]) 
10
Run Code Online (Sandbox Code Playgroud)

这些模式是否相同?如果没有,有什么区别,你何时会使用另一个?

我从labrepl的细胞自动机实验室的step函数中采用了前一种模式:

(defn step
  "Advance the automation by one step, updating all cells."
  [board]
  (doall
   (map (fn [window]
          (apply #(apply map brians-brain-rules %&)
                 (doall (map torus-window window))))
        (torus-window board))))
Run Code Online (Sandbox Code Playgroud)

更新:我添加了每个模式的具体示例,以帮助使问题更清晰.

clojure

6
推荐指数
1
解决办法
207
查看次数

为什么scala Await.result在两次传递相同的未来时会在repl中超时?

我发现这有点令人困惑.我认为scala中的future是一次设置的不可变容器,总是返回相同的值.

所以我有一个未来:

val y = future {Thread.sleep(1000); 1};
Run Code Online (Sandbox Code Playgroud)

现在,当我立即(在未来解决之前)将其传递给Await.result阻止两次:

Await.result(for (r1 <- y; r2 <- y) yield (r1, r2), 60 seconds)
Run Code Online (Sandbox Code Playgroud)

我得到了TimetoutException.

但是,如果我在未来解决后这样做,一切正常并按(1,1)预期返回.

这种行为的原因是什么?

编辑:我正在使用隐式ExecutionContext.Implicits.globalscala.concurrent@scala 2.10.3

编辑2:如果我创建另一个未来的实例做同样的事情,并对它们做Await.result它都不会阻止.

concurrency scala

5
推荐指数
1
解决办法
2848
查看次数