当我为返回一个参数的函数编写注释时,我没有任何问题。
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
,但是我认为这不是最好的方法。
我的问题是:如何正确注释带有两个或多个返回参数的函数?
我有包含数据的 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.54345774
到14.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 的初学者。现在我阅读了有关线程的信息,但我有一些问题。
IMO 原子操作 (AO) = 最简单的操作。dev 中最简单的操作是a = 1
. 但是我确实读了这篇文章(http://preshing.com/20130618/atomic-vs-non-atomic-operations/),我的印象是它没有最简单的操作\AO。作者告诉我们这个操作分为两个操作,这个操作不是AO。这个操作是AO,它必须有另一种类型。但我必须说他谈到了 C/C++ 和字节码,我认为在 Python 中也是如此。我如何理解这取决于类型和编译器。但是 Python 是动态类型的语言。它没有类型。
我决定向社区提出以下问题:
Python 中的原子操作是什么?
哪些操作是 Python 中的 AO?
如果简单的操作不简单,那么我不明白什么是原子操作。
我想了解一下Microsoft.VisualStudio.Workspace.PauseToken
.
当我调用时PauseTokenSource.Pause()
,方法暂停并且任务完成,我可以看到"已完成"消息.
之后我打电话PauseTokenSource.Resume()
,任务继续进行.但是当流程结束时我没有任何消息.
两个问题:
我想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) 我只想获取当前目录的目录列表(无递归)。
另外,我有挂载点/mnt/test0
带ext4
。
我愿意:
>>> [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)
这很奇怪。