gpt4 book ai didi

python - 如何键入注释字符串的长度?

转载 作者:行者123 更新时间:2023-12-03 20:46:06 25 4
gpt4 key购买 nike

我想在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它描述了如何定义自定义注释
您可以随时:

  • 在您的文档字符串中描述您的变量应该是 1 个字符长
  • 进行健全性/验证检查并引发适当的异常。
  • 使用类似 Marshmallow 的东西清理/序列化您的数据
  • 关于python - 如何键入注释字符串的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65521239/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com