小编Dan*_*ker的帖子

f 字符串表示与 str() 不同

我一直认为 f 字符串会调用该__str__方法。也就是说,f'{x}'始终与 相同str(x)。然而,有了这个班级

class Thing(enum.IntEnum):
    A = 0
Run Code Online (Sandbox Code Playgroud)

f'{Thing.A}''0'str(Thing.A)'Thing.A'enum.Enum如果我用作基类,此示例将不起作用。

f 字符串调用什么功能?

python enums f-string

73
推荐指数
2
解决办法
8846
查看次数

除了设置断点之外,还有什么方法(通过设置或扩展)可以在 VSCODE 中查看和使用变量。喜欢蜘蛛侠吗?

据我所知,我可以通过设置断点在vscode中查看变量,是否可以像Spyder一样在Console中查看和使用变量?
如下图:运行结果变量“line”可以在Console选项卡中查看和使用。脚本中的变量运行后可以在Console中轻松查看和使用。(也可以在变量资源管理器中查看)

那么,除了设置断点之外,还有什么方法(通过设置或扩展)来查看和使用 VSCODE 中的变量呢?喜欢蜘蛛侠.
任何帮助将不胜感激。

在此输入图像描述

python visual-studio-code

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

TypedDict 不允许可选键?

我想使用 pydantic 进行模式验证,并使用 TypedDict 来定义嵌套字典模式的一部分。但是,我意识到Optional如果在 TypedDict 类中指定它则不起作用。

我读到这个类将根据需要呈现所有键,并且使所有键都成为可选的方法是 at total=False。但是,我只希望其中一个键是可选的,其余键是必需的。有没有办法克服这个限制?

from typing import List, Optional
from pydantic import BaseModel
from typing_extensions import TypedDict

class _trending(TypedDict):
    allStores: Optional[bool] = False
    category: str
    date: str
    average: List[int]

class RequestSchema(BaseModel):
    storeId: str
    trending: _trending
Run Code Online (Sandbox Code Playgroud)

编辑

我之前尝试过这个,因为我认为它类似于嵌套列表。

from typing import List, Optional, Dict
from pydantic import BaseModel


class _trending(BaseModel):
    allStores: Optional[bool] = False
    category: str
    date: str
    average: List[int]

class RequestSchema(BaseModel):
    storeId: str
    trending: Dict[_trending]
Run Code Online (Sandbox Code Playgroud)

但遇到一条错误消息,指出 Dict 需要 2 个参数。显然 Dict …

python pydantic typeddict

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

什么是“除了*”运算符?

我收到了这段 Python 代码:

try:
    raise ExceptionGroup('group', [ValueError(123)])
except* ValueError:
    print('Handling ValueError')
Run Code Online (Sandbox Code Playgroud)

有什么except*作用?

python exception

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

警告构建:运行脚本构建阶段“模块”将在每次构建期间运行,因为它未指定任何输出。为了解决这个警告

我收到一些集成到我的工作区中的框架/模块的错误。

警告构建:运行脚本构建阶段“模块名称”将在每次构建期间运行,因为它未指定任何输出。要解决此警告,请将输出依赖项添加到脚本阶段,或者通过取消选中脚本阶段中的“基于依赖项分析”将其配置为在每个构建中运行。

我正在寻找有关如何解决该问题的解决方案。

要解决此警告...或通过在脚本阶段取消选中“基于依赖关系分析”将其配置为在每个构建中运行。

我不想使用上述解决方案,因为这会花费我的构建时间。我宁愿知道下面该怎么做:

...将输出依赖项添加到脚本阶段

不幸的是我对如何做到这一点没有足够的知识。我在网上搜索了一下,没有找到具体的信息。

如何输出这些依赖关系?谢谢

xcode

42
推荐指数
2
解决办法
7万
查看次数

如何使 pytest 因警告而崩溃?

这是如何找到“因非串联而排序”警告的来源的扩展?。

在我的 pytest 中,我仍然收到相同的警告。我在这里查看了几个问题并完成了:

import warnings
warnings.filterwarnings('error')
Run Code Online (Sandbox Code Playgroud)

这是在如何捕获 numpy 警告中建议的,就像它是一个异常(不仅仅是为了测试)?

然而,当我运行 pytest 时,它仍然给我错误,但实际上没有任何错误......

python warnings pytest

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

pip:这些包与需求文件中的哈希值不匹配

当我尝试使用 pip install 安装库时,有时会出现此错误消息。

ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them.
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 docker-compose V2 构建多个映像时,会出现此错误。

我做了什么:

  1. pip install --no-cache-dir -r requirements.txt
  2. 升级点
  3. 尝试旧版本的 pip (20.0.2)。
  4. 更改受影响的包的版本。
  5. 更改DNS

然而,它仍然是随机出现的。错误消息引用的库也在不断变化。

有谁知道这个问题的原因?

python pip

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

mypy - 如何将线路标记为无法访问

我有一个以下形式的函数:

def get_new_file(prefix: str) -> pathlib.Path:
    for i in itertools.count(0):
        p = pathlib.Path(f'{prefix}_{i}')
        if not p.is_file():
            return p
    # This line is unreachable.
Run Code Online (Sandbox Code Playgroud)

mypy 抱怨该函数缺少 return 语句,这是可以理解的。有没有办法标记一条线,以便通知 mypy 该线应被视为不可到达?

python mypy

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

如何在weakref.finalize中引用最终对象?

我有一个类(我无法控制)没有实现自己的清理。我认为这是其中一种情况weakref.finalize,但我无法让它发挥作用。

def cleanup(obj):
    print('Cleanup obj')
    if not obj.is_closed:
        obj.close()
...

def make_obj():
    obj = SomeClass()

    # this creates an extra ref, so cleanup is never run
    weakref.finalize(obj, cleanup, obj)

    # this always results in ReferenceError; obj is already gone when cleanup is called
    weakref.finalize(obj, cleanup, weakref.proxy(obj))  
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?我误解了什么?

python weak-references

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

malloc 属性不带参数

我创建了一对函数:

void destroy_foo(void *ptr);
void *create_foo(void);
Run Code Online (Sandbox Code Playgroud)

顾名思义,这些功能类似于mallocfree。我想使用malloc gcc 函数属性来通知编译器这种关系,以便此代码会发出警告-fanalyzer

void *ptr = create_foo();
destroy_foo(ptr);
destroy_foo(ptr);
Run Code Online (Sandbox Code Playgroud)

按照上述链接中的示例,我做了

void *create_foo(void) __attribute__ ((malloc (destroy_foo)));
Run Code Online (Sandbox Code Playgroud)

虽然 gcc (11.4.0) 对此没问题,但 clang (14.0.0) 抱怨

error: 'malloc' attribute takes no arguments
void *create_foo(void) __attribute__ ((malloc (destroy_foo)));
                                       ^
Run Code Online (Sandbox Code Playgroud)

我的理解是 gcc 属性与 clang 配合得很好。

c gcc static-analysis clang

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