python - 如何限制python函数的参数必须是字符串或lambda表达式之类的函数

标签 python python-3.x

例如下面,第一个参数应该限制为字符串,第二个参数应该是一个函数。但是,这对两者来说都是错误的语法。任何人都可以帮助建议正确的语法来施加类型限制?

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/

相关文章:

python - 关于数据类型的 BeautifulSoup 代码问题

python - 将附加参数传递给 post_save 信号

python - 为什么 shutils 和 df 报告的磁盘大小有几个百分比的差异?

python - Timeit 对 python 函数进行计时

python - 如何迭代和删除 networkx 有向图中的特定边

Python 3 : RuntimeWarning with numpy. 电源

Python:即使引用的文件存在也找不到文件

python - Pandas 按位置覆盖列名

python - 向 Bokeh 堆叠条形图添加交互

python - pandas read_table 带有正则表达式分隔符,因为负数没有中间空格