小编Kir*_*ill的帖子

具有两个或多个返回参数的函数注释

当我为返回一个参数的函数编写注释时,我没有任何问题。

def func() -> str:
    return "ok"
Run Code Online (Sandbox Code Playgroud)

但是,当我编写带有两个或多个参数的注释时,我的PyCharm给了我SyntaxError: invalid syntax

def func() -> str, str:
    return "ok - 1", "ok - 2"
Run Code Online (Sandbox Code Playgroud)

我认为参数可以与组合使用tuple,但是我认为这不是最好的方法。

我的问题是:如何正确注释带有两个或多个返回参数的函数?

请在您的回复中加入PEP链接(如果有)。我在PEP 484PEP 3107上寻找答案,但找不到。

python type-hinting python-3.x

16
推荐指数
1
解决办法
1048
查看次数

pandas 小数点后的位数

我有包含数据的 CSV 文件:

Number
1.1
2.2
4.1
5.4
9.176
14.54345774
16.25664
Run Code Online (Sandbox Code Playgroud)

如果我打印并显示,pandas我会得到:

df = pd.read_csv('data.csv')
print(df)

      Number
0   1.100000
1   2.200000
2   4.100000
3   5.400000
4   9.176000
5  14.543458
6  16.256640
Run Code Online (Sandbox Code Playgroud)

但如果我切14.5434577414.543输出改变:

     Number
0   1.10000
1   2.20000
2   4.10000
3   5.40000
4   9.17600
5  14.54300
6  16.25664
Run Code Online (Sandbox Code Playgroud)

第一种情况小数点后位数pandas为 6,第二种情况为 5。

为什么格式要改变?我应该更改哪些pandas参数以使这些情况相同?我希望小数点后的位数保持不变,并且如果可能的话,小数点后的位数四舍五入到小数点后的最大位数。

更新

IMO,这一刻出现在数据初始化时,所以round如果我想使用 6 位数字,就不会得到理想的结果。只能减少(6->5 位),但不能增加(5->6)。

python pandas

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

Python 中的原子操作是什么?

我是 Python 的初学者。现在我阅读了有关线程的信息,但我有一些问题。

IMO 原子操作 (AO) = 最简单的操作。dev 中最简单的操作是a = 1. 但是我确实读了这篇文章(http://preshing.com/20130618/atomic-vs-non-atomic-operations/),我的印象是它没有最简单的操作\AO。作者告诉我们这个操作分为两个操作,这个操作不是AO。这个操作是AO,它必须有另一种类型。但我必须说他谈到了 C/C++ 和字节码,我认为在 Python 中也是如此。我如何理解这取决于类型和编译器。但是 Python 是动态类型的语言。它没有类型。

我决定向社区提出以下问题:

  1. Python 中的原子操作是什么?

  2. 哪些操作是 Python 中的 AO?

如果简单的操作不简单,那么我不明白什么是原子操作。

python python-multithreading

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

为什么PauseToken会破坏任务?

我想了解一下Microsoft.VisualStudio.Workspace.PauseToken.

当我调用时PauseTokenSource.Pause(),方法暂停并且任务完成,我可以看到"已完成"消息.

之后我打电话PauseTokenSource.Resume(),任务继续进行.但是当流程结束时我没有任何消息.

两个问题:

  1. 为什么会这样?
  2. 我该如何解决?

我想PauseToken在工作期间不要打破任务.暂停后我不想收到消息.我希望在流程的真正结束时收到消息.

public PauseToken PauseToken;

private async Task DoDoneAsync()
{
    FlagCommandDone = true;

    try
    {
        task = Task.Factory.StartNew(async () =>
            {
                double i = 0;
                while (i < 3)
                {
                    i++;
                    await PauseToken.WaitWhilePausedAsync();
                    Thread.Sleep(5000);
                }
            }
        );
        await task;
    }
    catch (Exception e)
    {
        isError = true;
        message = e.Message;
    }

    if (!isError) message = task.IsCompleted ? "Completed" : "Canceled";

    MessageBox.Show(message);

    FlagCommandDone = false;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

task …
Run Code Online (Sandbox Code Playgroud)

c# wpf async-await

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

奇怪的行为 os.path.isdir(x)

我只想获取当前目录的目录列表(无递归)。

另外,我有挂载点/mnt/test0ext4

我愿意:

>>> [x for x in os.listdir('/mnt/test0/base/trash') if os.path.isdir(x)]
[]
Run Code Online (Sandbox Code Playgroud)

/mnt/test0/base/trash有一个 dir test,但是list是空的。

如果我做:

>>> [x for x in os.listdir('/mnt/test0/base/trash')]
Run Code Online (Sandbox Code Playgroud)

它在这里。

>>> [x for x in os.listdir('/mnt/test0/base/trash')]
['test']
Run Code Online (Sandbox Code Playgroud)

Linux ls

# ls -lA
total 28
drwxrwx--- 9 root root 28672 Nov 11 23:00 test
Run Code Online (Sandbox Code Playgroud)

什么是奇怪的错误os.path.isdir(x)

更新

我重新启动 Python,现在我得到了结果:

>>> [x for x in os.listdir('/mnt/test0/base/trash') if os.path.isdir(x)]
['test']
Run Code Online (Sandbox Code Playgroud)

这很奇怪。

python

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