我想在python中键入一个只接受单个字符的函数,以这个例子为例:(s: str) -> int
由于 Python 没有用于单个字符的类型,因此您不能只执行 (s: char) -> int
之类的操作。 .
有什么方法可以输入 s: str
应该只有一个字符吗?
我可以看到这在编写代码时提示很有用。
这是我的完整示例:
import unicodedata
roman_numeral_lookup = {"I": 1, "V": 5, "X": 10, ...}
def exact_roman_numeral(s: str) -> int:
"""Return the value of a single Roman numeral. Dosen't support multicharacter roman numerals such as 'XII' or Apostrophus."""
# Convert Unicode Roman numerals into to their normalised text version. e.g. Ⅹ -> X, ⅰ -> I
s = unicodedata.normalize("NFKC", s).upper()
if s in roman_numeral_lookup:
return roman_numeral_lookup[s]
else: # Some form of invalid value.
if not isinstance(s, str):
raise TypeError("Argument must be of type str.")
elif len(s) != 1:
raise ValueError("Must be a single Roman numeral.")
else:
raise ValueError("Not a valid/supported Roman numeral.")
(我知道错误不是最好的)
最佳答案
好吧,理论上不应该像您希望的那样使用类型注释 - 这意味着,并非代码中的每个约束都应该由类型注释表示。
现在,要回答您的问题,您当然可以构建自己的类型注释,但这将是,IMO,工作太多而结果太少。
有other answers on SO它描述了如何定义自定义注释
您可以随时:
关于python - 如何键入注释字符串的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65521239/