Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么ureg(0)等于1?_Python_Pint - Fatal编程技术网

Python 为什么ureg(0)等于1?

Python 为什么ureg(0)等于1?,python,pint,Python,Pint,以下代码打印“1无量纲”: import pint ureg=pint.UnitRegistry() print(ureg(0.)) 为什么,品脱?调用UnitRegistry对象。你所看到的无量纲1 在本例中,您碰巧在duck类型中遇到了一个小缺陷:它需要一个字符串,但实际上并没有验证它是否收到了一个字符串。然后使用代码: if not input_string: return self.Quantity(1) 所以任何零值数,或无,或空序列,或其他虚假的东西都变成了Quantit

以下代码打印“1无量纲”:

import pint
ureg=pint.UnitRegistry()
print(ureg(0.))
为什么,品脱?

调用UnitRegistry对象。你所看到的无量纲1

在本例中,您碰巧在duck类型中遇到了一个小缺陷:它需要一个字符串,但实际上并没有验证它是否收到了一个字符串。然后使用代码:

if not input_string:
    return self.Quantity(1)
所以任何零值数,或无,或空序列,或其他虚假的东西都变成了Quantity1。如果您向它传递了一个意外类型的truthy表达式,解析器可能会参与其中并引发异常,但falsy值甚至从未到达解析器

我不清楚为什么空表达式应该是Quantity1,但作者明确地将该检查放在那里,所以它一定是有意的

简而言之,不要将非字符串传递给函数。当falsy时,它们会无声地失败,当它假定它们是str并且试图对它们调用str方法时,会对任何其他对象引发异常。

调用UnitRegistry对象。你所看到的无量纲1

在本例中,您碰巧在duck类型中遇到了一个小缺陷:它需要一个字符串,但实际上并没有验证它是否收到了一个字符串。然后使用代码:

if not input_string:
    return self.Quantity(1)
所以任何零值数,或无,或空序列,或其他虚假的东西都变成了Quantity1。如果您向它传递了一个意外类型的truthy表达式,解析器可能会参与其中并引发异常,但falsy值甚至从未到达解析器

我不清楚为什么空表达式应该是Quantity1,但作者明确地将该检查放在那里,所以它一定是有意的


简而言之,不要将非字符串传递给函数。当falsy时,它们会无声地失败,当它假定它们是str并且试图对它们调用str方法时,会对其他任何东西引发异常。

看起来像是包中的错误/限制

传递不同于0品脱的整数时崩溃:

它崩溃是因为包试图对非字符串执行字符串操作,而非字符串应该是字符串。但是测试是,如果不输入字符串,那么0.0会让pint创建一个1类,或者其他什么意思,就像通过测试一样。通过1可以到达下一行,该行将崩溃

只是缺少一个类型检查,比如:

    if not isinstance(input_string,str):
        raise Exception("a string is required")

包中似乎存在缺陷/限制

传递不同于0品脱的整数时崩溃:

它崩溃是因为包试图对非字符串执行字符串操作,而非字符串应该是字符串。但是测试是,如果不输入字符串,那么0.0会让pint创建一个1类,或者其他什么意思,就像通过测试一样。通过1可以到达下一行,该行将崩溃

只是缺少一个类型检查,比如:

    if not isinstance(input_string,str):
        raise Exception("a string is required")

看起来像是包中的错误。看起来像是包中的错误。虽然您的解释基本上是正确的,\u from\u string与此无关。parse_表达式就是被调用的,它在输入测试中有一个类似的错误,所以您几乎是正确的,但它是一个完全不同的代码路径。不过,我的回溯指示字符串_预处理器。不同版本?字符串预处理器是从parse_表达式调用的,只是parse_表达式完全在不同的模块中。对,但是跟踪中的_from_字符串在哪里?您的回溯从来没有提到过它,但它确实提到了parse_表达式。虽然您的解释基本正确,但\u from_string与此无关。parse_表达式就是被调用的,它在输入测试中有一个类似的错误,所以您几乎是正确的,但它是一个完全不同的代码路径。不过,我的回溯指示字符串_预处理器。不同版本?字符串预处理器是从parse_表达式调用的,只是parse_表达式完全在不同的模块中。对,但是跟踪中的_from_字符串在哪里?您的回溯根本没有提到它,而它确实提到了parse_表达式。