问题标签 [python-3.7]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8307 浏览

python - 如何在不注释类型的情况下添加数据类字段?

当数据类中有一个类型可以是任何类型的字段时,如何省略注释?

似乎上面的代码实际上并没有为fav_duck. 它只是使它成为一个普通的旧类属性。

0 投票
1 回答
664 浏览

python - Python 的 __slots__ 和数据类的(内存方面和访问时间方面)比较是什么

Python__slots__用于减少实例的内存占用,这是通过将变量存储在“小型固定大小的数组 [s] 中来实现的,就像元组或列表一样”。实例属性是可变的,但您不能添加其他属性。

另一方面,有一些数据类(根据我收集的内容)通过定义一些 dunder(等)来帮助创建类,并且 PEP 557 将其描述为“具有默认值的可变命名元组”。

我了解它们的目的是不同的,实际上您可以同时使用它们

0 投票
1 回答
10673 浏览

python - 排序python 3.7+字典的最快方法

既然从 Python 3.7 (和CPython 3.6 )开始保证 Python 字典的插入顺序,那么对字典进行排序的最佳/最快方法是什么——按值和按键?

最明显的方法可能是这样的:

有没有其他更快的方法来做到这一点?

请注意,这个问题不是重复的,因为以前关于如何对字典进行排序的问题已经过时了(基本上,答案是You can't; use a collections.OrderedDictinstead)。

0 投票
1 回答
3135 浏览

python - 如何在 asyncio 中使用阻塞函数

我在一个项目中使用 django ORM(在 django 之外)。我的工作流程是

  1. 通过 django ORM 选择对象和
  2. 然后使用 asyncio lib 将其发送到消息队列

问题是你不能在异步环境中调用阻塞函数,你不能在阻塞环境中使用 async/await。

我想出了2个解决方案:

  1. 整个程序应该是异步的。并loop.run_in_executor在需要时用于调用阻塞函数。

  2. 整个程序应该是同步的。并使用asyncio.run()(Python 3.7)调用所需的异步函数。

我无法决定哪种方法更好。

我知道以前有人问过类似的问题。我的问题是尝试结合阻塞和非阻塞代码时是否有一般规则?

0 投票
3 回答
15737 浏览

python - Python中的上下文变量

假设我的 Python 应用程序中有一个函数,它定义了某种上下文 -user_id例如。此函数调用不将此上下文作为函数参数的其他函数。例如:

我的问题是:

  • Python 3.7的上下文变量可以用于此目的吗?如何?
  • 这就是这些上下文变量的用途吗?
  • 如何使用 Python v3.6 或更早版本执行此操作?

编辑

由于多种原因(架构遗留、库等),我不能/不会更改中间函数的签名f2,所以我不能只user_id作为参数传递,也不能将所有这些函数放在同一个类中。

0 投票
1 回答
370 浏览

python - python的正则表达式

我正在编写用于从字符串中删除测试限定符和额外分隔符的 regx。

我有一些模式如下,

预期的输出是,

我在下面写了相同的代码,

寻找优化方法来做到这一点以及将处理所有模式的代码。

0 投票
1 回答
12831 浏览

python - OrderedDict 在 Python 3.7 中会变得多余吗?

Python 3.7 更新日志

dict对象的插入顺序保存特性已被宣布为 Python 语言规范的官方部分。

这是否意味着这OrderedDict将变得多余?我能想到的唯一用途是保持与不保留普通字典插入顺序的旧版本 Python 的向后兼容性。

0 投票
1 回答
1158 浏览

python - 仅在 PyCharm 中尝试相对导入超出顶级包消息

更新:如果我将select模块的名称(发生导入错误)更改为select1,问题就消失了!什么?

首先:当我尝试从命令行导入我的包或在项目目录中运行 pytest 时,一切正常。

但是在 PyCharm 中,当我尝试运行我的测试时,并且仅在 PyCharm 中时,我遇到了“尝试相对导入超出顶级包”的问题。我不知道为什么。

我什至已经删除并重新克隆了存储库,但问题仍然存在。

这是问题分支的链接。

这是结核病:

我敢肯定这里发生了一些简单的事情,但我就是想不通。注意:我使用的是 Python 3.7 RC 1。

sys.pathpycharm 中和命令行出来是一样的,除了 pycharm 还包括 pycharm 项目主包目录(由于某种原因出现了两次)。

0 投票
1 回答
2398 浏览

python-3.x - 在 python 3.5 附带的 Ubuntu 16.04 上运行 python 3.7 的最佳方式

我想避免反向移植,它们似乎总是把我的包裹弄乱了。

所以我在想像 conda / virtualenv / 甚至 docker 这样的工具可以提供帮助。在我的系统上使用 python 3.7 最简单/最干净的方法是什么?

0 投票
15 回答
46956 浏览

python - 数据类和属性装饰器

我一直在阅读 Python 3.7 的数据类作为命名元组的替代品(我通常在必须对结构中的数据进行分组时使用它)。我想知道数据类是否与属性装饰器兼容,以便为数据类的数据元素定义 getter 和 setter 函数。如果是这样,这是在某处描述的吗?或者有没有可用的例子?