quantity_input#

astropy.units.quantity_input(func=None, **kwargs)#

用于验证函数参数单位的修饰符。

单元规范可以作为关键字参数提供给decorator,或者使用函数注释语法。要呈现的注释或参数优先于任何decorator。

A UnitsError 如果参数的unit属性不等效于在decorator或注释中指定的unit,则将引发。如果参数没有单位属性,即它不是数量对象,则 ValueError 除非参数是批注,否则将引发。这是为了允许非数量注释通过。

如果在decorator中指定了等价性,则函数将在该等效性生效的情况下执行。

笔记

不支持检查函数变量参数内部的参数(即。 * arg或 * *夸克)。

原始函数可由属性化的 __wrapped__ 。看见 functools.wraps() 了解更多细节。

实例

import astropy.units as u
@u.quantity_input(myangle=u.arcsec)
def myfunction(myangle):
    return myangle**2
import astropy.units as u
@u.quantity_input
def myfunction(myangle: u.arcsec):
    return myangle**2

或使用单位感知土方量注释。

@u.quantity_input
def myfunction(myangle: u.Quantity[u.arcsec]):
    return myangle**2

也可以指定一个返回值注释,这将使函数始终返回 Quantity 在那个单位。

import astropy.units as u
@u.quantity_input
def myfunction(myangle: u.arcsec) -> u.deg**2:
    return myangle**2

使用等价物:

import astropy.units as u
@u.quantity_input(myenergy=u.eV, equivalencies=u.mass_energy())
def myfunction(myenergy):
    return myenergy**2