小编lai*_*e9m的帖子

什么时候使用return(产量)?

很长一段时间我都不知道你不能return在收益率声明面前.但实际上你可以:

def gen():
    return (yield 42)
Run Code Online (Sandbox Code Playgroud)

这类似于

def gen():
    yield 42
    return
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一用法是将发送的值附加到StopIteration:pep-0380

生成器中的return expr导致从生成器退出时引发StopIteration(expr).

def gen():
    return (yield 42)

g = gen()
print(next(g))  # 42
try:
    g.send('AAAA')
except StopIteration as e:
    print(e.value)  # 'AAAA'
Run Code Online (Sandbox Code Playgroud)

但这也可以使用额外的变量来完成,这更明确:

def gen():
    a = yield 42
    return a

g = gen()
print(next(g))
try:
    g.send('AAAA')
except StopIteration as e:
    print(e.value)  # 'AAAA'
Run Code Online (Sandbox Code Playgroud)

所以它似乎return (yield xxx)只是一种语法糖.我错过了什么吗?

python generator

22
推荐指数
1
解决办法
1855
查看次数

我应该使用恐慌还是返回错误?

Go提供了两种处理错误的方法,但我不确定使用哪种方法.

假设我正在实现一个ForEach接受切片或地图作为参数的经典函数.要检查是否传入了iterable,我可以这样做:

func ForEach(iterable interface{}, f interface{}) {
    if isNotIterable(iterable) {
        panic("Should pass in a slice or map!")
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

func ForEach(iterable interface{}, f interface{}) error {
    if isNotIterable(iterable) {
        return fmt.Errorf("Should pass in a slice or map!")
    }
}
Run Code Online (Sandbox Code Playgroud)

我看到一些讨论说panic()应该避免,但人们也说如果程序无法从错误中恢复,你应该panic().

我应该使用哪一个?选择正确的主要原则是什么?

error-handling go panic

19
推荐指数
3
解决办法
8457
查看次数

=声明与定义中的默认值

我知道这不是写作:

class A {
public:
    A(A&&) noexcept = default;
}?
Run Code Online (Sandbox Code Playgroud)

一个人应该写得更好

class A {
public:
    A(A&&) noexcept;
}?

inline A::A(A&&) noexcept = default;
Run Code Online (Sandbox Code Playgroud)

我听到的原因是:

  1. 它避免了构造函数变成了deleted.如果无法定义函数,编译器将给出错误.

  2. noexcept即使某些成员字段的移动构造函数未注释,也会声明移动构造函数noexcept.

有人可以解释一下这些差异背后的理论吗?

c++ default-constructor noexcept

18
推荐指数
2
解决办法
553
查看次数

不同的子序列DP解释

来自LeetCode

给定字符串S和字符串T,计算S中T的不同子序列的数量.

字符串的子序列是一个新字符串,它是通过删除一些(可以是无)字符而不干扰其余字符的相对位置而由原始字符串形成的.(即,"ACE"是"ABCDE"的子序列,而"AEC"不是).

这是一个例子:S ="rabbbit",T ="rabbit"

返回3.

我看到一个非常好的DP解决方案,但是,我很难理解它,任何人都可以解释这个dp是如何工作的?

int numDistinct(string S, string T) {

    vector<int> f(T.size()+1);

    //set the last size to 1.
    f[T.size()]=1;

    for(int i=S.size()-1; i>=0; --i){
        for(int j=0; j<T.size(); ++j){
            f[j]+=(S[i]==T[j])*f[j+1];
            printf("%d\t", f[j] );
        }
        cout<<"\n";
    }
    return f[0];
}
Run Code Online (Sandbox Code Playgroud)

algorithm dynamic-programming

12
推荐指数
1
解决办法
9701
查看次数

Python os.pipe与multiprocessing.Pipe

最近我正在研究Python中的并行编程工具.这是os.pipe和multiprocessing.Pipe之间的两个主要区别.(尽管它们被使用的场合)

  1. os.pipe是单向的,多处理.管道是双向的 ;
  2. 当把东西放入管道/从管道接收东西时,os.pipe使用编码/解码,而多处理.管道使用pickle/unpickle

我想知道我的理解是否正确,还有其他区别吗?谢谢.

python multithreading communication pipe multiprocessing

11
推荐指数
1
解决办法
1397
查看次数

request.adapters.HTTPAdapter中pool_connections的含义是什么?

初始化请求时Session,HTTPAdapter将创建两个并挂载到httphttps.

这是如何HTTPAdapter定义的:

class requests.adapters.HTTPAdapter(pool_connections=10, pool_maxsize=10,
                                    max_retries=0, pool_block=False)
Run Code Online (Sandbox Code Playgroud)

虽然我理解pool_maxsize(这是一个池可以保存的会话数)的含义,但我不明白pool_connections它是什么意思或它做了什么.Doc说:

Parameters: 
pool_connections – The number of urllib3 connection pools to cache.
Run Code Online (Sandbox Code Playgroud)

但是什么意思"缓存"?使用多个连接池有什么意义?

python urllib3 python-requests

11
推荐指数
3
解决办法
7467
查看次数

Angular 4:如何使用HTTPClient读取文本文件的内容

我的Angular 4项目目录中有一个.txt文件,我想阅读其内容.怎么做 ?以下是我使用的代码.

该文件位于"app"文件夹中的"files"文件夹中.我有HTTPClient代码的组件位于'httpclient'文件夹中,该文件夹位于'app'文件夹中.

含义'files'文件夹和'httpclient'文件夹是子文件夹.

代码如下所示.它没有工作因为我得到404错误 - 'GET http:// localhost:4200/files/1.txt 404(Not Found)'

this.http.get('/files/1.txt').subscribe(data => {
        console.log(data);
    },
        (err: HttpErrorResponse) => {
            if (err.error instanceof Error) {
                // A client-side or network error occurred. Handle it accordingly.
                console.log('An error occurred:', err.error.message);
            } else {
                // The backend returned an unsuccessful response code.
                // The response body may contain clues as to what went wrong,
                console.log(`Backend returned code ${err.status}, body was: ${err.error}`);
            }
        }
    );
Run Code Online (Sandbox Code Playgroud)

javascript angular

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

是否可以将 Black 作为 API 调用?

假设我想使用黑色作为 API,并执行以下操作:

import black

black.format("some python code")
Run Code Online (Sandbox Code Playgroud)

通过调用black二进制文件来格式化代码Popen是另一种选择,但这不是我要问的。

python python-black

11
推荐指数
2
解决办法
1210
查看次数

MAT_DATE_FORMATS字段的定义/含义

自定义日期选择器的解析和显示格式的材料示例使用自定义MAT_DATE_FORMATS
dateA11yLabel

我无法找到这些领域display.dateInput将在何处以及如何发挥作用.我能想到的display.monthYearLabel是用于在日历上显示所选日期,并dateA11yLabel用于年份选择器的选择下拉列表.

  1. 其他领域在哪里使用?
  2. 在编写自定义MAT_DATE_FORMATS时,是否必须定义所有字段?

datepicker typescript angular-material2 angular

10
推荐指数
2
解决办法
7336
查看次数

pika,stop_consuming不起作用

我是rabbitmq和pika的新手,并且在停止消费方面遇到了麻烦.

通道和队列设置:

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue=new_task_id, durable=True, auto_delete=True)
Run Code Online (Sandbox Code Playgroud)

基本上,消费者和生产者是这样的:

消费者:

def task(task_id):
    def callback(channel, method, properties, body):
        if body != "quit":
            print(body)
        else:
            print(body)
            channel.stop_consuming(task_id)

    channel.basic_consume(callback, queue=task_id, no_ack=True)
    channel.start_consuming()
    print("finish")
    return "finish"
Run Code Online (Sandbox Code Playgroud)

制片人:

proc = Popen(['app/sample.sh'], shell=True, stdout=PIPE)
while proc.returncode is None:  # running
    line = proc.stdout.readline()
    if line:
        channel.basic_publish(
            exchange='',
            routing_key=self.request.id,
            body=line
        )
    else:
        channel.basic_publish(
            exchange='',
            routing_key=self.request.id,
            body="quit"
        )
        break
Run Code Online (Sandbox Code Playgroud)

消费者task给了我输出:

# ... output from sample.sh, as expected

quit
?}q(UstatusqUSUCCESSqU  tracebackqNUresultqNUtask_idqU
1419350416qUchildrenq]u.
Run Code Online (Sandbox Code Playgroud)

但是,"finish" …

python rabbitmq pika

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