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