为什么这段代码能工作?具体来说,为什么我可以调用不带参数的run()函数,因为它特别需要count和name。PyLinter抱怨这段代码,并表示没有带有0参数的函数run()。但这样代码就能正常运行。
这是因为装饰师添加了一个同名为"run“但没有参数的附加函数吗?
import click
@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
help='The person to greet.')
def run(count, name):
"""Simple program that greets NAME for a total of COUNT times."""
for x in range(count):
click.echo('Hello %s!' % name)
if __name__ == "__main__":
run()发布于 2020-04-03 07:17:18
修饰语法
@decorator
def func():
pass实际上只是语法上的糖:
def func():
pass
func = decorator(func)IOW,它将函数名重新绑定到装饰器的返回值--通常情况下,它返回包装修饰函数的另一个函数。
因此,在您的示例中,您在主部分中调用的run()函数实际上不是您定义的run()函数,而是由您的装饰器返回的函数--它不会删除参数,因为装饰器的目的是收集这些参数并将其提供给原始函数;
发布于 2020-04-03 06:46:55
这不是一个正常的函数,我们不需要像通常那样传递参数。Click帮助您创建命令行接口.
因此,当您在命令提示符下运行此命令时,它将要求您输入值。
>>python your_file_name.py
>>Your name: Sanjay
>>Hello Sanjay!在这里,它将打印Sanjay一次,因为默认计数设置为1。
如果您传递计数,它将多次打印名称。
>>python your_file_name.py --count=3
>>Your name: Sanjay
>>Hello Sanjay!
>>Hello Sanjay!
>>Hello Sanjay!https://stackoverflow.com/questions/61006176
复制相似问题