例如下面,第一个参数应该限制为字符串,第二个参数应该是一个函数。但是,这对两者来说都是错误的语法。任何人都可以帮助建议正确的语法来施加类型限制?
def GetArg(msg:String, converter:lambda, default):
print("{}, the default is '{}':".format(msg, default))
return converter(stdin.readline().strip())
报错
Traceback (most recent call last):
File "E:/stdin_ext.py", line 4, in <module>
def GetArg(msg:String, converter, default:String):
NameError: name 'String' is not defined
和
File "E:/stdin_ext.py", line 4
def GetArg(msg:String, converter:lambda, default:String):
^
SyntaxError: invalid syntax
最佳答案
您可以使用输入模块。
from typing import Callable
def get_arg(msg: str, converter: Callable[[str], str], default) -> str:
print(f"{msg}, the default is '{default}':")
return converter(stdin.readline().strip())
假设您的函数 converter
接受一个 string
并返回一个 string
,而 get_arg
返回一个 字符串
。请注意,代码也已修改为遵循 python 的 naming convention。并使用 f strings
在旧样式格式字符串上。
另请注意,这些类型提示
只是提示。它们不会在静态或运行时检查。不过,某些 IDE 会帮助您确保它们是正确的。
关于python - 如何限制python函数的参数必须是字符串或lambda表达式之类的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51656146/