小编Auf*_*ind的帖子

在python中是否存在使用`if a == b == c:pass;`的副作用?

if a == b == c:
    # do something
Run Code Online (Sandbox Code Playgroud)

我们假设a, b, c是字符串变量.如果我使用上面的代码段执行# do something当且仅当所有三个字符串相等时,是否有任何可能的副作用?

我问,因为我必须互相检查三个变量,我得到很多案例:

if a == b == c:
    # do something
elif a == b != c:
    # do something
elif a != b == c.
    # do something
etc...
Run Code Online (Sandbox Code Playgroud)

也许有更好的方法来编码这个?

python string if-statement

9
推荐指数
3
解决办法
8019
查看次数

关于可清洗对象的说明需要说明

Mark RansomSO中回答了关于哈希SO问题:

[...]如果对象具有在其生命周期内永远不会更改的哈希值,则该对象是可清除的.因此,根据官方定义,即使它具有__hash__()功能,任何可变的东西都不能被清除.我关于这两个要求的说法是不真实的,因为可清除已经暗示要求是不可变的.

我想确保,我做对了 - 即使是非母语人士 - 所以我希望有人在我弄错的时候纠正我.

假设这门课

class Author(object):
    def __init__(self, id, name, age):
        self.id = id
        self.name = name
        self.age = age

    def __eq__(self, other):
        return self.id==other.id\
               and self.name==other.name

    def __hash__(self):
        return hash(('id', self.id,
                     'name', self.name))
Run Code Online (Sandbox Code Playgroud)

我明白了,这__eq__允许我将这个类的对象与==运算符进行比较.从马克斯回答我理解,即使我的对象peter = Author(1, "Peter", 33)有一个__hash__它是不可清洗的,因为我可能做的事情peter.age = 43,这意味着它不是不可变的.所以我的类的对象Author是不可编辑的,因此不能用作例如dictionarys中的键?我是否做得对或看起来是否需要更多解释?:-)

python hash

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

如何告诉MagicalRecord不使用基于文件的Core Data而是使用内存设置?

我按照这篇伟大的文章进入了关于核心数据的单元测试.设置看起来很简单,只涉及一些视图行代码.

- (void)setUp;
{
    [MagicalRecord setDefaultModelWithClass:[self class]];
    [MagicalRecord setupCoreDataStackWithInMemoryStore];
}

- (void)tearDown;
{
    [MagicalRecord cleanUp];
}

- (void)testSomeCalculationOnMyEntity;
{
    NSNumber *count = [MyEntity MR_numberOfEntities];
    // STAssert([testEntity customCalculation] == expectedValue, @"expected a good calculation");
}

@end
Run Code Online (Sandbox Code Playgroud)

问题是,每次我通过调用(如上所述)检查内核设置的核心数据中的实体数量[MyEntity MR_numberOfEntities],我得到的对象数量,存储在基于文件的设置中,这是一个几千个对象.这是怎么发生的?我的意思是第二行setUp表示内存中的一行,不是吗?这种情况应该返回0作为存储的对象数量.

谢谢你的任何建议!

编辑:

@casademora让我走上正轨.以下工作设置现在对我来说很好.

- (void)setUp;
{
    [MagicalRecord cleanUp]; // This solved the mystery.

    // I don't now why I had to remove this line, though.
    // [MagicalRecord setDefaultModelWithClass:[self class]];

    [MagicalRecord setupCoreDataStackWithInMemoryStore];
}

- (void)tearDown; …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c ios5 magicalrecord

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

后增量后==的令人费解的行为

有人在一些论坛帖子中假设很多人甚至是经验丰富的Java开发人员都不会理解以下Java代码的和平.

Integer i1 = 127;
Integer i2 = 127;
System.out.println(i1++ == i2++);
System.out.println(i1 == i2);
Run Code Online (Sandbox Code Playgroud)

作为一个对Java感兴趣的人,我给了他自己的想法并得出了以下结果.

System.out.println(i1++ == i2++);
// True, since we first check for equality and increment both variables afterwards.

System.out.println(i1 == i2);
// True again, since both variables are already incremented and have the value 128
Run Code Online (Sandbox Code Playgroud)

Eclipse告诉我不然.第一行是真的,第二行是假的.

我真的很感激解释.

第二个问题.这个Java是特定的还是这个例子也适用于基于C语言的例子?

java post-increment

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

在Mac OS上安装oursql Lion成功但在python中导入失败.**为什么?**

我按照在Mac OS X上安装oursql的安装说明进行操作

sudo pip install oursql
Run Code Online (Sandbox Code Playgroud)

告诉我,它找不到mysql_config我(找到它locate mysql_config和)告诉它在哪里找到它

sudo MYSQL_CONFIG=/usr/local/mysql-5.5.14-osx10.6-x86_64/bin/mysql_config pip install oursql
Run Code Online (Sandbox Code Playgroud)

出于可读性原因,我在底部添加了终端输出.之后我在终端启动了python(在Mac OS Lion上它现在是python 2.7,...)并且做到了

>>> import oursql
Run Code Online (Sandbox Code Playgroud)

但是python一直告诉我:

>>> import oursql
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(/Library/Python/2.7/site-packages/oursql.so, 2): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Library/Python/2.7/site-packages/oursql.so
  Reason: image not found
Run Code Online (Sandbox Code Playgroud)

我错过了什么?有什么建议?


pip安装的终端输出:

Downloading/unpacking oursql
  Downloading oursql-0.9.2.tar.bz2 (113Kb): 113Kb downloaded
  Running setup.py egg_info for package oursql

Installing collected packages: oursql
  Running setup.py install for oursql
    skipping 'oursqlx/oursql.c' …
Run Code Online (Sandbox Code Playgroud)

python macos installation package

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

如何告诉lxml.etree.tostring(element)不要在python中编写命名空间?

我有一个巨大的xml文件(1 Gig).我想将一些元素(entrys)移动到具有相同标题和规范的另一个文件.

假设原始文件包含带有标记的条目<to_move>:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE some SYSTEM "some.dtd">
<some>
...
<to_move date="somedate">
    <child>some text</child>
    ...
...
</to_move>
...
</some>
Run Code Online (Sandbox Code Playgroud)

我使用lxml.etree.iterparse迭代文件.工作良好.当我找到带有标签的元素时<to_move>,让我们假设它存储在element我做的变量中

new_file.write(etree.tostring(element))
Run Code Online (Sandbox Code Playgroud)

但这导致了

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE some SYSTEM "some.dtd">
<some>
...
<to_move xmlns:="some" date="somedate">  # <---- Here is the problem. I don't want the namespace.
    <child>some text</child>
    ...
...
</to_move>
...
</some>
Run Code Online (Sandbox Code Playgroud)

所以问题是:如何告诉etree.tostring()不要写xmlns:="some".这可能吗?我使用了lxml.etree的api文档,但我找不到令人满意的答案.

这是我找到的etree.trostring:

tostring(element_or_tree, encoding=None, method="xml",
xml_declaration=None, pretty_print=False, with_tail=True,
standalone=None, doctype=None, exclusive=False, with_comments=True)
Run Code Online (Sandbox Code Playgroud)

将元素序列化为其XML树的编码字符串表示形式.

对我来说,每一个参数tostring()似乎都没有帮助.有任何建议或更正吗?

python lxml namespaces tostring elementtree

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

如何在python中将一个列表中最"相似"的字符串映射到另一个列表?

给出两个包含字符串的列表.

  1. 一个包含世界各地的组织(主要是大学)的名称 - 不仅用英语写,而且总是使用拉丁字母.

  2. 另一个列表主要包含完整地址,其中可能出现第一个列表中的字符串(组织).

一个例子:

addresses = [
             "Department of Computer Science, Katholieke Universiteit Leuven, Leuven, Belgium",
             "Machine Learning and Computational Biology Research Group, Max Planck Institutes     Tübingen, Tübingen, Germany 72076",
             "Department of Computer Science and Engineering, University of Washington, Seattle, USA 98185",
             "Knowledge Discovery Department, Fraunhofer IAIS, Sankt Augustin, Germany 53754",    
             "Computer Science Department, University of California, Santa Barbara, USA 93106",
             "Fraunhofer IAIS, Sankt Augustin, Germany",
             "Department of Computer Science, Cornell University, Ithaca, NY",
             "University of Wisconsin-Madison"
            ] …
Run Code Online (Sandbox Code Playgroud)

python string-matching

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

如何将一个python字典腌制成MySQL?

我查看了几个SO-Questions,了解如何挑选python对象并将其存储到数据库中.我收集的信息是:

  • import pickleimport cpickle.如果性能有问题,请导入后者.
  • 假设dict是一个Python字典(或什么那么Python对象)pickled = pickle.dumps(dict).
  • pickled使用什么模块与数据库进行通信,存储到MySQL BLOB列中.
  • 再来一次.并用于pickle.loads(pickled)恢复python字典.

我只是想确保我明白这一点.我错过了一些关键的东西吗 有副作用吗?这真的很容易吗?

背景信息:我唯一想做的就是存储Googlegeocoder-Responses,在我的例子中是嵌套的python dictionarys.我只使用响应对象的一小部分,我不知道以后是否需要更多的响应对象.这就是为什么我想存储响应以节省我重复几百万个查询的原因.

python mysql pickle

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

如何在python脚本遇到错误或停止时通知自己?

我有一个在Ubuntu上运行的python脚本并处理MySQL数据库的内容.当脚本遇到未处理exception或处理完成时,我希望得到通知.

实现这一目标的恰当方法是什么?

我想在使用本SO-Answer中显示的方法从python中发送自己的电子邮件,但为了能够做到这一点,我必须硬编码我的logindata - 我不熟悉(脚本在公共服务器上运行)公司).

是否有任何建议绕过这个或使用更合适的方式实现它?

python ubuntu notifications

7
推荐指数
2
解决办法
3525
查看次数

在sscanf(s,"%d%n",&i,&n)中,n代表什么?

手册页指出签名sscanf

sscanf(const char *restrict s, const char *restrict format, ...);
Run Code Online (Sandbox Code Playgroud)

在SO上看到了一个答案,其中一个函数sscanf用于检查输入是否为整数.

bool is_int(char const* s) {
    int n;
    int i;
    return sscanf(s, "%d %n", &i, &n) == 1 && !s[n];
}
Run Code Online (Sandbox Code Playgroud)

看着!s[n]它似乎建议我们检查是否sscanf扫描了字符序列,直到终止字符\0.所以我假设n代表索引,s当函数结束时sscanf将在字符串中.

但是这个变量i怎么样?这是什么意思?

编辑:

更明确一点:我看到签名需要sscanf一个类型的指针char *作为第一个参数.格式说明符作为seconf参数,因此它知道如何解析字符序列以及与下一个参数一样多的转换说明符变量.我现在明白这i是为了保存解析的整数.

由于只有一个格式说明符,我试图推断出函数n.

我的假设是n正确的吗?

c

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