小编rsk*_*rsk的帖子

什么`__import __('pkg_resources').declare_namespace(__ name __)`do?

在一些__init__.py模块文件中,我看到了这样的单行:

__import__('pkg_resources').declare_namespace(__name__)
Run Code Online (Sandbox Code Playgroud)

它做了什么以及为什么人们使用它?假设它与在运行时动态导入和创建命名空间有关.

python namespaces module runtime

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

jQuery承诺可以与Ember.RSVP.Promise链接吗?

我需要帮助来理解一些承诺逻辑.这是我想要实现的目标 - 使用jQuery我获取请求,然后我用我的承诺链接它进行一些检查,我的代码:

http://jsbin.com/UVEpurU/1/edit

function checkInfoPromise(r) {
    var ok = true,
        promise = Ember.RSVP.Promise(function(resolve, reject) {
        if(ok) {
            return resolve(r);
        }
        else {
            return reject(r);
        }
        });
    return promise;
}

var requestPromise = $.get('/')
.then(function(r){
    return checkInfoPromise(r);
});

requestPromise.then(function(r) {
    console.log(r);
}).fail(function(r) {
    console.log('fail');
});
Run Code Online (Sandbox Code Playgroud)

并且它不能像我期望的那样工作.文档说他们应该互相合作,但他们没有,或者我的代码不正确.

与jQuery + jQuery相同的逻辑工作正常:

http://jsbin.com/AYeyaxO/1/edit

而Ember + Ember的作品:

http://jsbin.com/iMUgiDo/1/edit

jquery promise ember.js

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

我可以在python中更改对象的__name__属性吗?

更改__name__对象的属性值是否正确,如下例所示:

>>>
>>> def f(): pass
...
>>> f.__name__
'f'
>>> b = f
>>> b.__name__
'f'
>>> b.__name__ = 'b'
>>> b
<function b at 0x0000000002379278>
>>> b.__name__
'b'
>>>
Run Code Online (Sandbox Code Playgroud)

python object

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

如果类型未明确提供,借用检查器会抱怨在循环内关闭

我有这个代码,借用检查器显示错误:

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=55d050b6f25410ce0e17ef9e844b048d

fn f1(v: &str) {
}

fn main() {
    let c = |v| f1(v);
    for _ in 0..1 {
        let s = String::new();
        c(&s);
    }
}
Run Code Online (Sandbox Code Playgroud)
   |
10 |         c(&s);
   |         - ^^ borrowed value does not live long enough
   |         |
   |         borrow later used here
11 |     }
   |     - `s` dropped here while still borrowed
Run Code Online (Sandbox Code Playgroud)

但是如果我向闭包添加显式类型,代码会编译 let c = |v: &str| f1(v);

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=54ca20dff5bdf1831ec705481e4936bb

有人可以解释为什么它在第二种情况下有效而不是在第一种情况下有效,因为我理解 rust 在第一个例子中正确推断出相同的类型(因为如果我在循环外运行闭包,它会起作用)?

rust borrow-checker

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

如何将函数返回值从引用转换为数组?

我在Perl中有这个代码:

sub f {
    return [1,2,3]
}

print f;
Run Code Online (Sandbox Code Playgroud)

该函数f返回对数组的引用,如何在没有附加变量的情况下将返回值转换为数组,就像这里一样?

sub f {
    return [1,2,3]
}

$a = f;
print @$a;
Run Code Online (Sandbox Code Playgroud)

arrays perl reference

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

另一个Python变量范围问题

我有以下代码:

>>> def f(v=1):
...     def ff():
...             print v
...             v = 2
...     ff()
...
>>> f()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in f
  File "<stdin>", line 3, in ff
UnboundLocalError: local variable 'v' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

我确实理解为什么会出现这个消息(Python变量范围问题),但v在这种情况下如何使用变量呢?global v在这种情况下不起作用.

python variables scope

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