小编arg*_*per的帖子

在Python中使用"is"或"=="进行数字比较是否更好?

使用"is"运算符或"=="运算符来比较Python中的两个数字是否更好?

例子:

>>> a = 1
>>> a is 1
True
>>> a == 1
True
>>> a is 0
False
>>> a == 0
False
Run Code Online (Sandbox Code Playgroud)

python

55
推荐指数
4
解决办法
9万
查看次数

python直方图单行

有很多方法可以编写计算直方图的Python程序.

通过直方图,我的意思是一个函数,它计算a中对象的出现次数iterable并输出字典中的计数.例如:

>>> L = 'abracadabra'
>>> histogram(L)
{'a': 5, 'b': 2, 'c': 1, 'd': 1, 'r': 2}
Run Code Online (Sandbox Code Playgroud)

编写此函数的一种方法是:

def histogram(L):
    d = {}
    for x in L:
        if x in d:
            d[x] += 1
        else:
            d[x] = 1
    return d
Run Code Online (Sandbox Code Playgroud)

是否有更简洁的方法来编写此功能?

如果我们在Python中有字典理解,我们可以写:

>>> { x: L.count(x) for x in set(L) }
Run Code Online (Sandbox Code Playgroud)

但由于Python 2.6没有它们,我们必须写:

>>> dict([(x, L.count(x)) for x in set(L)])
Run Code Online (Sandbox Code Playgroud)

虽然这种方法可以读取,但效率不高:L经过多次.此外,这对单寿命发电机不起作用; 该函数应该对迭代器生成器同样有效,例如:

def gen(L):
    for x in L:
        yield x
Run Code Online (Sandbox Code Playgroud)

我们可能会尝试使用该reduce函数(RIP):

>>> reduce(lambda d,x: dict(d, …
Run Code Online (Sandbox Code Playgroud)

python reduce counting histogram

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

从DOI获取元数据

数字对象标识符(DOI)是全局唯一的字符串,用于标识电子文档(例如,学术文章的PDF).它本质上提供了一种创建文档永久链接的方法(例如,http://dx.doi.org/10.1145/146585.146609).

是否有Web服务(或任何其他系统)来获取给定DOI的文档的元数据(最好是BibTeX形式)?

编辑添加一些说明信息.

doi metadata bibtex

32
推荐指数
3
解决办法
5480
查看次数

setuptools麻烦 - 不包括包,包括数据文件

我对setuptools很新.我已经看到了一些类似的问题,它有点疯狂,我似乎遵循我看到的建议,但setuptools仍然做了一些不同于我想要的东西.

这是我的项目的结构:

.
..
package1/
    __init__.py
    abc.py
    ...
tests/
    __init__.py
    test_package1.py
LICENSE
README.md
RELEASE
setup.py
Run Code Online (Sandbox Code Playgroud)

这是我的setup.py的内容:

#!/usr/bin/env python
import os
#from distutils.core import setup
from setuptools import setup, find_packages

setup(
    name='package1',
    version='1.1',
    test_suite="tests",
    packages=find_packages(exclude=['tests']),    
    include_package_data=True,
    package_data = {
        '': ['LICENSE', 'README.md5', 'RELEASE']
    },   
)
Run Code Online (Sandbox Code Playgroud)

另外,在我的清单文件中,我有:

include LICENSE
include RELEASE
include README.md
Run Code Online (Sandbox Code Playgroud)

我用以下内容构建tar:

python setup.py sdist
Run Code Online (Sandbox Code Playgroud)

我想要:

  1. tests从源代码分发中排除目录;
  2. 在site-packages目录中有LICENSE,README.md,RELEASE文件,可以在顶层,也可以在package1目录中(此时我同意).

相反,这是发生的事情:

  1. tests 目录仍然在创建的tar存档中,并安装到site-packages;
  2. 文件将复制到存档,但不会安装到程序包的站点打包目录中.

我没有想法,有人可以向我解释我做错了什么以及如何解决它?

python configuration setuptools

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

可以在Python 3中使用Clutter吗?

Clutter有Python 3绑定吗?如果是这样,我怎样才能获得并使用它们?

clutter python-3.x python-bindings

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

如何确定动态SQLAlchemy关系的类型(例如,多对一)?

假设我定义了以下SQLAlchemy类:

Base = declarative_base()

class Person(Base):
    __tablename__ = 'person'
    id = Column(Integer, primary_key=True)
    computers = relationship('Computer', backref=backref('owner', lazy='dynamic'))

class Computer(Base):
    __tablename__ = 'computer'
    id = Column(Integer, primary_key=True)
    ownerid = Column(Integer, ForeignKey('person.id'))
Run Code Online (Sandbox Code Playgroud)

进一步假设我以这种方式访问​​了惰性查询对象:

relation = getattr(Computer, 'owner')
Run Code Online (Sandbox Code Playgroud)

我如何确定是否relation引用单个实例Person(即多对一关系,如本示例中),或者是否relation引用实例集合(如一对多关系)?换句话说,如何确定动态SQLAlchemy关系对象的关系类型?

python sqlalchemy

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

ReST API是否应该静默忽略更改不存在的字段的请求?

考虑一个ReST API,它提供了一个数据库接口.

服务器是否应该使用HTTP 400 Bad Requeston PUTPATCHrequest尝试为数据库中不存在的列指定新值?服务器应该默默忽略错误吗?服务器应该做一些我在这里没有提到的其他内容吗?

rest api-design http

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

如何有条件地跳过python中的测试

满足条件时,我想跳过一些测试功能,例如:

@skip_unless(condition)
def test_method(self):
    ...
Run Code Online (Sandbox Code Playgroud)

在这里,我希望测试方法如果condition评估为true,则报告为跳过。我用鼻子做了一些努力就可以做到这一点,但是我想看看是否可以在鼻子2中使用它。

相关问题描述了一种方法,用于跳过nas2中的所有测试。

python unit-testing nose pytest nose2

6
推荐指数
2
解决办法
2068
查看次数

为什么 Jupyter Notebook 无法验证 WebSocket 连接?

我正在使用以下命令使用 Jupyter 笔记本服务器创建一个新的 Python 3 虚拟环境:

virtualenv env -p python3
. env/bin/activate
pip install jupyter
jupyter notebook
Run Code Online (Sandbox Code Playgroud)

这些都运行成功。但是,当我尝试创建新笔记本时,出现 WebSocket 身份验证错误,并且无法创建笔记本。客户说

无法建立与笔记本服务器的连接。笔记本电脑将继续尝试重新连接。检查您的网络连接或笔记本服务器配置。

以下是 Jupyter 笔记本服务器的日志:

[I 22:50:23.085 NotebookApp] The port 8888 is already in use, trying another port.
[I 22:50:23.110 NotebookApp] Serving notebooks from local directory: /tmp
[I 22:50:23.110 NotebookApp] 0 active kernels 
[I 22:50:23.110 NotebookApp] The Jupyter Notebook is running at: http://localhost:8889/?token=b4d69926e308334a4ca121d3ceaa0dfa9f1ba93312770f88
[I 22:50:23.110 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). …
Run Code Online (Sandbox Code Playgroud)

python websocket jupyter-notebook

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

如何为Python socketserver请求处理程序编写单元测试?

如何为socketserver请求处理程序编写单元测试?我试过使用以下代码,但遇到了一个问题:

import socketserver, unittest, threading

class TestServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
    allow_reuse_address = True

class MyRequestHandlerTest(unittest.TestCase):
    def setUp(self):
        self.server = TestServer((HOST, PORT), MyRequestHandler)
        self.server_thread = threading.Thread(target=self.server.serve_forever)
        self.client = socket.create_connection((HOST, PORT))
        #self.server_thread.setDaemon(True)
        self.server_thread.start()

    def tearDown(self):
        self.client.close()
        self.server.shutdown()
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用多个测试功能,就像这样

    def test_foo(self):
        self.client.send(b'foo\n')
        result = self.client.recv(1024)
        self.assertEqual(b'FOO', result)

    def test_bar(self):
        self.client.send(b'bar\n')
        result = self.client.recv(1024)
        self.assertEqual(b'BAR', result)
Run Code Online (Sandbox Code Playgroud)

我收到了错误

socket.error: [Errno 98] Address already in use
Run Code Online (Sandbox Code Playgroud)

在线self.server = ...,即使我指示测试服务器allow_reuse_address.

编辑:删除了我最初发布的两个错误之一,以简化问题.

python sockets unit-testing tcp socketserver

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

可以从setup.cfg安装pip,就像从需求文件安装吗?

根据setuptools文档setuptools版本30.3.0(2016年12月8日)“允许使用配置文件(通常setup.cfg)来定义包的元数据和通常提供给其他的选择setup()功能”。与运行pip install -r requirements.txt从需求文件安装Python软件包类似,是否有办法要求pip安装配置文件install_requires选项中列出的软件包setup.cfg

python pip setuptools

5
推荐指数
4
解决办法
2111
查看次数