小编tar*_*ras的帖子

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

jQuery.when理解

我试图使用jQuery.when两个ajax请求,然后在两个请求完成后调用一些函数.这是我的代码:

var count = 0;
var dfr;

var showData = function(data) {
    dfr.resolve();
    alert(count);
   // Do something with my data data received
};

var method1 = function() {
    dfr = $.Deferred();

    return $.ajax('localhost/MyDataService/DataMethod_ReturnsData', {
        dataType: "jsonp",
        jsonp: "$callback",
        success: showData
    });
};

var method2 = function() {
    return $.ajax('localhost/MyDataService/DataMethod_ReturnsCount', {
        dataType: "jsonp",
        jsonp: "$callback",
        success: function(data) {
            count = data.d.__count;
        }
    });
};

$.when(method1(), method2())
    .then(showData());
Run Code Online (Sandbox Code Playgroud)

但是这没有按预期工作.Ajax调用method1将返回要使用的数据,showData()并且Ajax调用method2将返回计数,该计数将分配给var count并稍后用于showData(). …

ajax jquery jquery-deferred

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

如何编写恢复cwd的装饰器?

如何编写一个装饰器,将当前工作目录恢复到调用修饰函数之前的状态?换句话说,如果我在执行a的函数上使用装饰器,则在调用函数os.chdir()后不会更改cwd.

python decorator cwd

28
推荐指数
4
解决办法
1万
查看次数

如何在IronPython中使用C#dll

我用C#创建了一个dll.如何在IronPython中使用dll.我试图使用clr.AddReference("yxz.dll")添加dll.但它失败了.我已经尝试将dll放在IronPython脚本的执行目录中.在尝试引用dll时仍然无法声明"找不到名称xyz".

ironpython

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

使用std :: greater或std :: less作为参数的参数

我想用一个接受任一参数std::greater<int>std::less<int>作为参数的参数来创建一个函数.不过,我仍然坚持参数的语法.

这是我尝试的格式:

myFunction(int a, int b, bool *comp(int, int)) { … }
…
std::greater<int> bigger;
myFunction(2, 3, bigger);
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我怀疑第三个参数完全错误.它到底应该是什么?

无法转换std::greater<int>bool* (*)(int, int)

c++ functor comparison-operators c++11

13
推荐指数
2
解决办法
6791
查看次数

如何将运行时对象类型用作泛型类型提示参数?

介绍

使用Python/MyPy类型提示,可以使用.pyi存根将注释保存在单独的文件中以实现.我正在使用此功能来提供SQLAlchemy的ORM(更具体地说,flask_sqlalchemy插件)的基本提示.

模型定义如下:

class MyModel(db.Model):
    id = db.Column()
    ...
...
Run Code Online (Sandbox Code Playgroud)

其中db.Model直接包含在SQLAlchemy中.例如,可以通过以下方式查询它们:

MyModel.query.filter({options: options}).one_or_none()
Run Code Online (Sandbox Code Playgroud)

其中filter()返回另一个Query,one_or_none()返回MyModel的实例(显然是None).

下面的.pyi文件成功提示上面的构造,虽然它不完整 - 没有办法提示返回类型one_or_none().

class _SQLAlchemy(sqlalchemy.orm.session.Session):
    class Model:
       query = ... # type: _Query

class _Query(sqlalchemy.orm.query.Query):
    def filter(self, *args) -> query.Query: ...
    def one_or_none(self) -> Any: ...

db = ... # type: _SQLAlchemy
Run Code Online (Sandbox Code Playgroud)

问题

如何完全和一般地暗示上述内容,并提示one_or_none()的返回类型?我的第一次尝试是使用泛型,但看起来我无法访问所讨论的子类型(在给定的示例中,MyModel).为了说明一种非工作方法:

from typing import Generic, TypeVar

_T = TypeVar('_T')

class _SQLAlchemy(sqlalchemy.orm.session.Session):
    class Model:
       def __init__(self, *args, **kwargs):
           self.query = ... # type: _Query[self.__class__]

class _Query(Generic[_T], sqlalchemy.orm.query.Query):
    def filter(self, *args) -> _Query[_T]: ...
    def …
Run Code Online (Sandbox Code Playgroud)

python type-hinting python-3.5

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

重写Sphinx autodoc"Alias of"用于导入私有类?

我有一个Python包,我试图用sphinx-autodoc记录.我的python包有一个__init__.py文件,它从子模块中导出一个类,使其可以在包级别访问.

from a.b.c.d import _Foo as Foo

__all__ = ["Foo"]
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我的(html)文档如下:

abc包

子模块

abcd模块

[在abcd模块中剪切不相关公共类的文档]

模块内容

c模块.

abc Foo

_Foo的别名

_Foo因为它是abcd子模块中的私有类,所以(正确地)没有文档,因此不是非常有用.

我可以在my中添加以下内容,以conf.py确保记录模块中的私有类定义.

def skip(app, what, name, obj, skip, options):
    if name == "_Foo":
        return False
    return skip
Run Code Online (Sandbox Code Playgroud)

其他替代方案,但不是我尝试过的好东西:

  1. 重命名a.b.c.d._Fooa.b.c.d.Foo(然后更新导入到from a.b.c.d import Foo) - 但后来我将类记录两次,一次在abcd模块标题下,再一次在Module内容标题下.
  2. 重命名a.b.c.d.Fooa.b.c.d.MyFoo,然后导入(from a.b.c.d import MyFoo as Foo)导致MyFoo被记录,并且Foo被列为一个别名MyFoo. …

python python-sphinx autodoc

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

熊猫:将不同的功能应用于不同的列

当使用df.mean()时,我得到一个结果,其中给出了每列的平均值.现在让我们说我想要第一列的平均值,以及第二列的总和.有没有办法做到这一点?我不想拆卸和重新组装数据帧.

我最初的想法是按照pandas.groupby.agg()的方式做一些事情:

df = pd.DataFrame(np.random.random((10,2)), columns=['A','B'])
df.apply({'A':np.mean, 'B':np.sum}, axis=0)

Traceback (most recent call last):

  File "<ipython-input-81-265d3e797682>", line 1, in <module>
    df.apply({'A':np.mean, 'B':np.sum}, axis=0)

  File "C:\Users\Patrick\Anaconda\lib\site-packages\pandas\core\frame.py", line 3471, in apply
    return self._apply_standard(f, axis, reduce=reduce)

  File "C:\Users\Patrick\Anaconda\lib\site-packages\pandas\core\frame.py", line 3560, in _apply_standard
    results[i] = func(v)

TypeError: ("'dict' object is not callable", u'occurred at index A')
Run Code Online (Sandbox Code Playgroud)

但显然这不起作用.看起来传递一个字典会是一种直观的方式,但还有另一种方式(再次没有拆解和重新组装DataFrame)吗?

python aggregate pandas

9
推荐指数
2
解决办法
4461
查看次数

将值列表四舍五入到 python 中另一个列表中最接近的值

假设我有以下两个数组:

>>> a = np.random.normal(size=(5,))
>>> a
array([ 1.42185826,  1.85726088, -0.18968258,  0.55150255, -1.04356681])

>>> b = np.random.normal(size=(10,10))
>>> b
array([[ 0.64207828, -1.08930317,  0.22795289,  0.13990505, -0.9936441 ,
         1.07150754,  0.1701072 ,  0.83970818, -0.63938211, -0.76914925],
       [ 0.07776129, -0.37606964, -0.54082077,  0.33910246,  0.79950839,
         0.33353221,  0.00967273,  0.62224009, -0.2007335 , -0.3458876 ],
       [ 2.08751603, -0.52128218,  1.54390634,  0.96715102,  0.799938  ,
         0.03702108,  0.36095493, -0.13004965, -1.12163463,  0.32031951],
       [-2.34856521,  0.11583369, -0.0056261 ,  0.80155082,  0.33421475,
        -1.23644508, -1.49667424, -1.01799365, -0.58232326,  0.404464  ],
       [-0.6289335 ,  0.63654201, -1.28064055, -1.01977467,  0.86871352,
         0.84909353,  0.33036771,  0.2604609 , -0.21102014, …
Run Code Online (Sandbox Code Playgroud)

python algorithm numpy

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

Alembic - sqlalchemy初始迁移

我在创建初始迁移时遇到问题,该迁移会自动拥有我在models.py中使用共享Base(declarative_base)定义的表.

当我输入命令时:

alembic revision --autogenerate
Run Code Online (Sandbox Code Playgroud)

alembic创建一个空文件.

我的配置或方法有什么问题?

project.base.py:

from sqlalchemy.ext.declarative import declarative_base


Base = declarative_base()
Run Code Online (Sandbox Code Playgroud)

env.py:

import sys
import os

sys.path.append(os.path.abspath(os.getcwd()))
from alembic import context
from sqlalchemy import engine_from_config, pool
from logging.config import fileConfig

from project.base import Base
target_metadata = Base.metadata
def run_migrations_online():
    """Run migrations in 'online' mode.

    In this scenario we need to create an Engine
    and associate a connection with the context.

    """
    engine = engine_from_config(
        config.get_section(config.config_ini_section),
        prefix='sqlalchemy.',
        poolclass=pool.NullPool)

    connection = engine.connect()
    context.configure(
        connection=connection,
        target_metadata=target_metadata
    )

    # target_metadata.reflect(engine, …
Run Code Online (Sandbox Code Playgroud)

python django sqlalchemy alembic

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