相关疑难解决方法(0)

如何查看运行我的脚本的Python版本?

如何检查Python解释器的哪个版本正在解释我的脚本?

python version

1099
推荐指数
11
解决办法
142万
查看次数

什么是Python 3.5中的类型提示

__CODE__据说其中一个被谈到的功能__CODE__.

的例子__CODE__本中提到的文章同时也提到使用类型负责任提示.有人可以解释更多关于它以及什么时候应该使用它什么时候不使用?

python type-hinting python-3.x python-3.5

216
推荐指数
3
解决办法
9万
查看次数

如何使用类型提示指定"可空"返回类型

假设我有一个功能:

def get_some_date(some_argument: int=None) -> %datetime_or_None%:
    if some_argument is not None and some_argument == 1:
        return datetime.utcnow()
    else:
        return None
Run Code Online (Sandbox Code Playgroud)

如何为可能的内容指定返回类型None

python type-hinting python-3.x python-3.5

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

如何注释多个返回值的类型?

如何使用类型提示来注释返回一个Iterable总是产生两个值的函数:a bool和a str?提示Tuple[bool, str]很接近,除了它将返回值类型限制为元组,而不是生成器或其他类型的可迭代.

我很好奇,因为我想注释一个foo()用于返回多个值的函数,如下所示:

always_a_bool, always_a_str = foo()
Run Code Online (Sandbox Code Playgroud)

通常函数喜欢foo()做这样的事情return a, b(它返回一个元组),但我喜欢的类型暗示有足够的灵活性,以取代发电机或列表或别的东西返回的元组.

python type-hinting python-3.x python-3.5

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

我如何记录:rtype:对于一个返回多种可能数据类型的函数?

在Python文档字符串中,如何记录:rtype:可以返回多种可能数据类型的函数?

例如,如果函数可以返回defaultdictOR dictOR list,则根据函数参数,您如何记录这个?

代码示例:

from collections import defaultdict

def read_state(state_file, state_file_type='defaultdict'):
    """Deserialize state file or create empty state and return it.

    :param state_file: The path and file name of state file to read.
    :type state_file: str
    :param state_file_type: Data type in which state is stored.
    :type state_file_type: str
    :return: Current or new empty state.
    :rtype: ????? 
    """
    if os.path.exists(state_file):
        with open(state_file) as conf_fo:
            state = json.load(conf_fo)
    elif state_file_type == 'defaultdict':
        state = defaultdict(lambda: …
Run Code Online (Sandbox Code Playgroud)

python restructuredtext docstring return-type

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

如何使用类型提示为参数指定多个类型?

我有一个Python函数,它接受XML数据作为str.

为方便起见,该功能还会检查xml.etree.ElementTree.Elementstr在必要时自动转换为.

import xml.etree.ElementTree as ET

def post_xml(data: str):
    if type(data) is ET.Element:
        data = ET.tostring(data).decode()
    # ...
Run Code Online (Sandbox Code Playgroud)

是否可以使用类型提示指定参数可以作为两种类型之一给出?

def post_xml(data: str or ET.Element):
    # ...
Run Code Online (Sandbox Code Playgroud)

python arguments type-hinting python-3.x

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

python - 指定具有多个基数的类型(输入 AND 运算符)

我理解(如这个问题文档中所解释的)X or 的类型提示Y可以表示为:

Union[X,Y]
Run Code Online (Sandbox Code Playgroud)

但是如何表达X and Y的类型提示呢?当表达相关对象必须是 和 的子类时,这将很有XY

只要所有继承这两者XY事先已知的类,以下示例就可以工作:

class X: pass
class Y: pass
class A(X,Y): pass
class B(X,Y): pass

def some_function(arg: Union[A,B]): 
    pass
    # do stuff with arg that only depends on inherited members from X and Y
Run Code Online (Sandbox Code Playgroud)

但是如果另一个依赖于上面代码的包定义了:

class C(X,Y): pass
Run Code Online (Sandbox Code Playgroud)

Csome_function也将按设计工作。我正在寻找更好的类型提示来使用,而不是Union[X,Y]包含任何可能的子类XY

我理解解决方法可能是定义:

class XY(X,Y): pass
Run Code Online (Sandbox Code Playgroud)

然后将其用作基类和类型提示:

class A(XY): pass
class B(XY): …
Run Code Online (Sandbox Code Playgroud)

python python-typing

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

嵌套字典的类型提示

在我的Python脚本的一种数据结构我分析的是一个JSON文件,该文件后json.load(file_handle),是类型<class 'dict'>。到现在为止还挺好。现在对于使用它作为输入参数的函数,我想要解析的 json 的类型提示。我在打字文档中读到,对于dicts 作为参数,我应该使用Mapping[key_type, value_type]

from typing import Mapping

def foo(json_data: Mapping[str, str]) -> None:
    ...
Run Code Online (Sandbox Code Playgroud)

我解析的 json 有str-type 键和str-type 值,但通常情况下,它的结构是高度递归的。因此,值更可能是dict带有str键的 a,甚至是dicts 作为值。它是非常嵌套的,直到在最深的层次上,最后一个 dict 终于有了str键和str值。

那么我如何更精确地表示这个数据结构呢?我在想一些事情,沿着这个问题的思路,它可能是:

Union[Mapping[str, str], Mapping[str, Mapping]]
Run Code Online (Sandbox Code Playgroud)

但它似乎只代表一级递归。有没有更好的方法来提示这个?

python json dictionary type-hinting

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

如何输入提示函数的可选返回参数?

如何输入可选输出参数提示:

def myfunc(
        x: float, 
        return_y: bool = False
        ) -> float, Optional[float] : # !!! WRONG !!!

    # ... code here
    #
    # y and z are floats

    if return_y:
        return z, y

    return z
Run Code Online (Sandbox Code Playgroud)

- - 编辑

这似乎有效:
-> Tuple[float, Union[None, float]] :
Run Code Online (Sandbox Code Playgroud)

但这太丑陋了,似乎掩盖了一个事实,即通常它只会返回一个简单的浮点数。这是正确的方法吗?

正确的方法请参阅下面的答案。

---编辑2

此问题被标记为该问题的重复项。然而,那个问题是关于Union返回类型的,而这个问题是关于Optional返回类型的。


注意:这种设计不是一个好的实践,应该避免,以支持一致的返回类型。尽管如此,如果必须这样做,可选输出参数意味着根据输入参数的标志可能不会返回的参数。

python type-hinting

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

类型错误: | 不支持的操作数类型:“type”和“NoneType”

from dataclasses import dataclass

@dataclass
class InventoryItem:
    """Class for keeping track of an item in inventory."""
    name: str | None = None
    unit_price: float
    quantity_on_hand: int = 0
Run Code Online (Sandbox Code Playgroud)

类型错误: | 不支持的操作数类型:“type”和“NoneType”

Python 3.9

我认为问题是使用最新版本的python,如何解决。

我尝试使用“或”,但没有帮助

python typing nonetype

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