小编Mar*_*mer的帖子

可变函数参数默认值的良好用途?

在Python中将一个可变对象设置为函数中参数的默认值是一个常见的错误.以下是David Goodger撰写的优秀文章中的一个例子:

>>> def bad_append(new_item, a_list=[]):
        a_list.append(new_item)
        return a_list
>>> print bad_append('one')
['one']
>>> print bad_append('two')
['one', 'two']
Run Code Online (Sandbox Code Playgroud)

之所以出现这种情况的解释是在这里.

现在我的问题:这个语法有一个很好的用例吗?

我的意思是,如果遇到它的每个人都犯了同样的错误,调试它,理解问题,从而试图避免它,这种语法有什么用?

python arguments mutable default-value

59
推荐指数
5
解决办法
7022
查看次数

我如何(可以)在Jupyter笔记本下使用custom.js文件?

在IPython笔记本(例如v3.1)中,我可以添加一个~/.ipython/profile_default/static/custom/custom.js文件来执行一些自定义JavaScript.例如,我可以这样做:

require(['base/js/namespace', 'base/js/events'], function(IPython, events) {
    console.log("A");
    events.on('app_initialized.NotebookApp', function() {
        console.log("B");
    });
    console.log("C");
});
Run Code Online (Sandbox Code Playgroud)

然后,在JS控制台中,我会看到A,接着是B,然后是C.

现在,从版本4.0开始,他们将它分解为Jupyter笔记本.加载相同的文件(尽管事实是它在下面~/.ipython,而不是在下面~/.jupyter),并且代码被执行.但是,我不再看到这B条线.我猜应用程序没有初始化.我仍然看到它在源代码中被触发,但是后来会发生,还是只是不起作用?

我如何让事情再次发挥作用?我不需要再等了app_initialized吗?在某处记录了这些吗?

编辑

这个页面似乎表明,现在的方法是创建一个自定义扩展并将所有操作放在该load_ipython_extension函数中.是对的吗?如果是这样,mathjax怎么样?和CodeMirror选项?

ipython ipython-notebook jupyter jupyter-notebook

21
推荐指数
3
解决办法
9533
查看次数

无法弹出Android手机

当我尝试从我的Windows 8笔记本电脑中弹出我的Android手机时(使用任务栏中的"安全删除硬件和弹出媒体"图标),我弹出一个"弹出USB复合设备的问题"弹出消息:

Windows无法阻止您的"Android ADB接口"设备,因为程序仍在使用它.关闭可能正在使用该设备的所有程序,然后稍后重试.

我有很多后台和Windows进程正在运行,但没有应用程序,所以任何想法可能导致这个?其中一个后台进程是"abd(32位)",那么我应该结束那个任务吗?或者只是拔掉设备并且不担心先将其弹出会更好吗?

android adb

16
推荐指数
2
解决办法
9769
查看次数

在GitHub桌面(或Github for Windows)中回滚未经修改的更改

我阅读了Stack Overflow上的几十篇帖子以及网页上的很多页面(包括GitHub的帮助页面),花了我几个小时才弄清楚如何做这个超级简单的事情,坦率地说根本不是很明显,所以我是我会在这里回答我自己的问题.

我正在使用GitHub for Windows(更新:它现在称为Github Desktop),我对我的本地文件进行了一系列更改.它变得如此混乱,我决定我只想将我的本地文件回滚到他们最后一次提交时的位置.我没有做出新的改变 - 我只是想摆脱它们.我怎样才能做到这一点?

git github github-for-windows github-desktop

13
推荐指数
3
解决办法
5940
查看次数

'[< - .data.frame'中的R错误...替换有#项,需要#

我是R的新手,这个超出了我.下面的脚本使用两个虚拟表(结果和计数),每个表有两列(A和B).我正在运行排列测试来比较A和B的结果.具体来说,我正在查看A和B的结果/计数.结果和计数都有20行,我写了一个循环来运行排列测试每个前10行,然后是前11行,然后是12行,最多20行.当它工作时,它偶尔会有效,我最后得到一个漂亮的图形.

#Set up the dummy data - two competing tables (result & count)
result <- data.frame(matrix(runif(40)*100, nrow=20))
names(result)[1] <- paste("A"); names(result)[2] <- paste("B")
count <- data.frame(matrix(runif(40)*100, nrow=20))
names(count)[1] <- paste("A"); names(count)[2] <- paste("B")
n.iter <- 1e3

#Run a permutation test
permtest <- function(result, count) {
    n <- dim(result)[1]
#   print(n)
    stat <- function(x, y) abs(diff(range(colSums(x)/colSums(y))))
    swap <- function(x, i) { x[i, ] <- cbind(x[, "B"], x[, "A"])[i, ]; return (x) }
    sim <- replicate(n.iter, { i <- runif(n) < 1/2; …
Run Code Online (Sandbox Code Playgroud)

r dataframe

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

在自动格式化时禁用重新排列方法

我正在使用Android Studio 2.2,我喜欢使用自动格式化我的代码ctrl-alt-L.然而,问题在于它还重新排序了我的所有方法.(出于某种原因,它希望将所有静态方法放在类的顶部.)有没有办法在自动格式化时禁用方法的重新排列?

注意:我猜我可以进入Settings -> Editor -> Code Style -> Java并在"安排"标签下删除所有"匹配规则",但必须有一个比这更简单的方法,不是吗?

android-studio

7
推荐指数
1
解决办法
1812
查看次数

`conda update --all`没有更新Spyder

我只是在Windows 10机器上安装蟒蛇,我以后做的第一件事是进入蟒蛇提示并运行conda udpate conda,然后conda update --all.正如所料,它更新了很多东西.然而,当我然后运行Spyder时,我得到一个弹出窗口说可以使用新版本的Spyder.

什么?我刚刚更新了一切.检查conda list我看到sypder 3.2.4确实安装了,所以我做了以下事情:

(基础)C:\ Users\Mark> conda update --all

解决环境:完成

已安装所有请求的包.

(基础)C:\ Users\Mark> conda update spyder

解决环境:完成

套餐计划

环境位置:C:\ Users\Mark\Anaconda3

添加/更新的规格: - spyder

将下载以下包:

package                    |            build
---------------------------|-----------------
spyder-3.2.6               |           py36_0         2.6 MB
Run Code Online (Sandbox Code Playgroud)

以下包将更新:

spyder: 3.2.4-py36h8845eaa_0 --> 3.2.6-py36_0
Run Code Online (Sandbox Code Playgroud)

继续([y]/n)?

为什么conda update -all不查找和更新我安装的Spyder版本?

spyder anaconda conda

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

类后带有“ $ 1”的java.io.NotSerializableException

我遇到序列化问题,无法找到原因。这是Eclipse中的Android应用程序,给了我一个非常无用的堆栈跟踪,如下所示:

09-01 00:06:24.414: W/System.err(9961): java.io.NotSerializableException: com.myprogram.main.Entity$1
09-01 00:06:24.414: W/System.err(9961):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1344)
09-01 00:06:24.414: W/System.err(9961):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
09-01 00:06:24.414: W/System.err(9961):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
09-01 00:06:24.414: W/System.err(9961):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
09-01 00:06:24.415: W/System.err(9961):     at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:959)
09-01 00:06:24.415: W/System.err(9961):     at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:360)
09-01 00:06:24.415: W/System.err(9961):     at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1054)
09-01 00:06:24.415: W/System.err(9961):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1384)
09-01 00:06:24.415: W/System.err(9961):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
09-01 00:06:24.415: W/System.err(9961):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
09-01 00:06:24.415: W/System.err(9961):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
Run Code Online (Sandbox Code Playgroud)

找到Java标志以启用扩展的序列化调试信息后,我决定设置

-Dsun.io.serialization.extendedDebugInfo=true
Run Code Online (Sandbox Code Playgroud)

以下如何为从eclipse运行的程序指定默认的JVM参数?我将标志插入到JRE的VM参数中,但是堆栈跟踪没有更改。重新启动Eclipse没有帮助。因此,在编辑eclipse的vm args之后,我将标志添加到了eclipse.ini,但是堆栈跟踪仍然保持不变。我期望输出看起来像java.io.NotSerializableException-但是该字段在哪里?

我得到它com.myprogram.main.Entity$1是不可序列化的。这很简单。问题是为什么?关于如何解决这个问题有java.io.NotSerializableException什么建议吗?

java debugging serialization android

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