小编Rab*_*ski的帖子

有什么区别.(点)和$(美元符号)?

(.)和美元符号有($)什么区别?据我了解,它们都是不需要使用括号的语法糖.

syntax haskell function-composition

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

在循环之前或循环中声明变量之间的区别?

我一直想知道,一般来说,在循环之前声明一个抛弃变量,而不是在循环内部重复,是否会产生任何(性能)​​差异?Java中的一个(毫无意义的)示例:

a)循环前的声明:

double intermediateResult;
for(int i=0; i < 1000; i++){
    intermediateResult = i;
    System.out.println(intermediateResult);
}
Run Code Online (Sandbox Code Playgroud)

b)声明(重复)内循环:

for(int i=0; i < 1000; i++){
    double intermediateResult = i;
    System.out.println(intermediateResult);
}
Run Code Online (Sandbox Code Playgroud)

哪一个更好,一个还是b

我怀疑重复变量声明(例子b)在理论上会产生更多的开销,但是编译器足够聪明,所以它并不重要.实施例b具有更紧凑的优点,并且将变量的范围限制在其使用的位置.尽管如此,我倾向于根据示例来编码一个.

编辑:我对Java案件特别感兴趣.

java variables performance loops initialization

307
推荐指数
14
解决办法
13万
查看次数

超出相对导入中的顶级包错误

看来这里已经有一些关于python 3中相对导入的问题了,但是在经历了很多这些问题后,我仍然找不到我的问题的答案.所以这是问题所在.

我有一个如下所示的包裹

package/
   __init__.py
   A/
      __init__.py
      foo.py
   test_A/
      __init__.py
      test.py
Run Code Online (Sandbox Code Playgroud)

我在test.py中有一行:

from ..A import foo
Run Code Online (Sandbox Code Playgroud)

现在,我在文件夹中package,我跑了

python -m test_A.test
Run Code Online (Sandbox Code Playgroud)

我收到了消息

"ValueError: attempted relative import beyond top-level package"
Run Code Online (Sandbox Code Playgroud)

但如果我在父文件夹中package,例如,我运行:

cd ..
python -m package.test_A.test
Run Code Online (Sandbox Code Playgroud)

一切都好.

现在我的问题是: 当我在文件夹中时package,我在test_A子包中运行模块test_A.test,根据我的理解,..A只上升一个级别,它仍然在package文件夹中,为什么它给出了消息说beyond top-level package.导致此错误消息的原因是什么?

python import package

238
推荐指数
12
解决办法
18万
查看次数

JUnit混淆:使用'extends TestCase'还是'@Test'?

我发现JUnit的正确使用(或至少是文档)非常令人困惑.这个问题既可作为未来参考,也可作为真正的问题.

如果我理解正确,有两种主要的方法来创建和运行JUnit测试:

方法A(JUnit 3-style):创建一个扩展TestCase的类,并用该单词启动测试方法test.当作为JUnit Test(在Eclipse中)运行该类时,test将自动运行以该单词开头的所有方法.

import junit.framework.TestCase;

public class DummyTestA extends TestCase {

    public void testSum() {
        int a = 5;
        int b = 10;
        int result = a + b;
        assertEquals(15, result);
    }
}
Run Code Online (Sandbox Code Playgroud)

方法B(JUnit 4-style):创建一个"普通"类并@Test在方法前加一个注释.请注意,您不必使用单词启动方法test.

import org.junit.*;
import static org.junit.Assert.*;

public class DummyTestB {

    @Test
    public void Sum() {
        int a = 5;
        int b = 10;
        int result = a + b;
        assertEquals(15, result);
    }
}
Run Code Online (Sandbox Code Playgroud)

混合两者似乎不是一个好主意,请参阅例如 …

java junit automated-tests

149
推荐指数
4
解决办法
7万
查看次数

如何确定已安装的Eclipse是32位还是64位版本?

如何判断我(Windows 7)PC上的特定Eclipse实例是32位还是64位版本?

我已经检查了关于屏幕和可以从那里调用的对话框的迷宫,但我没有找到任何线索.

此外,右键单击Windows资源管理器中的eclipse.exe并打开属性对话框没有给出任何提示.

eclipse 32bit-64bit windows-7

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

如何知道函数返回类型和参数类型?

虽然我知道Python的鸭子类型概念,但我有时会遇到函数的参数类型或函数返回值的类型.

现在,如果我自己编写函数,我就知道了类型.但是,如果有人想要使用并调用我的函数,他/她应该如何知道这些类型呢?我通常将类型信息放在函数的docstring中(如:"...the id argument should be an integer...""... the function will return a (string, [integer]) tuple.")

但是查找文档字符串中的信息(并将其作为编码器放在那里)真的应该如何完成?

编辑:虽然大多数答案似乎都指向"是的,文档!" 对于"复杂"类型,我觉得这并不总是很容易.
例如:如何在docstring 中简明扼要地描述函数返回元组列表,每个元组的元组(node_id,node_name,uptime_minutes)以及元素分别是字符串,字符串和整数?
文档字符串PEP文档没有给出任何指导.
我想反驳就是在这种情况下应该使用类,但我发现python非常灵活,因为它允许使用列表和元组来传递这些东西,即没有类.

python types

64
推荐指数
6
解决办法
8万
查看次数

是否可以在ipython的笔记本中使用不同的颜色进行打印?

是否有可能在IPython笔记本中以某种不同的颜色显示某些输出?例如,有些东西:

 print("Hello Red World", color='red')
Run Code Online (Sandbox Code Playgroud)

python jupyter-notebook

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

Django 的@property 有什么作用?

什么是@property在Django?

这是我的理解:@property是一个类中方法的装饰器,用于获取方法中的值。

但是,据我所知,我可以像平常一样调用该方法,它就会得到它。所以我不确定它到底是做什么的。

文档中的示例:

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    birth_date = models.DateField()

    def baby_boomer_status(self):
        "Returns the person's baby-boomer status."
        import datetime
        if self.birth_date < datetime.date(1945, 8, 1):
            return "Pre-boomer"
        elif self.birth_date < datetime.date(1965, 1, 1):
            return "Baby boomer"
        else:
            return "Post-boomer"

    @property
    def full_name(self):
        "Returns the person's full name."
        return '%s %s' % (self.first_name, self.last_name)
Run Code Online (Sandbox Code Playgroud)

如果存在与不存在有什么区别?

python django

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

如何在现有的Eclipse项目中打开Mercurial?

我在Eclipse中为Mercurial集成安装了HgEclipse插件.我在Eclipse中有一个现有的(Java)项目,但我无法弄清楚如何为这个现有项目启用mercurial change tracking.

我似乎可以导入一个mercurial项目(File> Import> Mercurial> Clone ...),但这只适用于新的Eclipse项目......

当然,我可以通过命令行应用Mercurial,例如hg init在项目目录中,但这不会在Eclipse中被选中.

那么,如何为现有 Eclipse项目打开Mercurial ?

eclipse mercurial hgeclipse

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

在if-then-else结构中放置注释的位置?

我从来没有决定评论if-then-else结构的最佳方式,所以我从来没有标准化以一致的方式来评论它们.我很欣赏任何见解.

一些选择:

一个)

if (blabla) { 
   // this comment explains what happens in the IF case
   dothis();
} else { 
  // this comment explains what happens in the ELSE case
   dosomethingelse();
}
Run Code Online (Sandbox Code Playgroud)

缺点:在多个dothis()语句的情况下,我喜欢评论主要块,在这种情况下,IF-comment是否属于第一个dothis()块或整个IF情况并不总是很清楚

或b)

if (blabla) { // this comment explains what happens in the IF case
   dothis();
} else { // this comment explains what happens in the ELSE case
   dosomethingelse();
}
Run Code Online (Sandbox Code Playgroud)

缺点:仅适用于简短评论.如果IF和ELSE情况没有直接从代码中清除,我通常会注释IF-THEN-ELSE结构,这通常需要长于一行的注释.

或c)

// if the following happens
if (blabla) { // then do this
   dothis(); …
Run Code Online (Sandbox Code Playgroud)

comments if-statement

34
推荐指数
2
解决办法
8136
查看次数