如何定义名为“的函数?”;进口;用Python?

如何定义名为“的函数?”;进口;用Python?,python,function,import,command-line-interface,python-click,Python,Function,Import,Command Line Interface,Python Click,我正在写一个小的python命令行工具,可以导入一些数据 用法看起来像 ./cli.py export -p ./cli.py import -p @click.command(short_help="Imports all documents", @click.option('password', '-p') def import(password): coll = db.get_document_collection() 显然,“进口”与正常进口状态相冲突。所以函数看起来

我正在写一个小的python命令行工具,可以导入一些数据

用法看起来像

./cli.py export -p
./cli.py import -p
@click.command(short_help="Imports all documents",
@click.option('password', '-p')
def import(password):    
    coll = db.get_document_collection()
显然,“进口”与正常进口状态相冲突。所以函数看起来像

./cli.py export -p
./cli.py import -p
@click.command(short_help="Imports all documents",
@click.option('password', '-p')
def import(password):    
    coll = db.get_document_collection()
由于我使用
单击
库来解析/生成我的命令行选项,因此每个函数都会以其名称导入。但当我执行它时,它失败了

   def import(password):
            ^
   SyntaxError: invalid syntax

TLDR;如何指定已由python内部构件定义的函数?

在不更改
单击
的选项的情况下重命名函数确实会重命名子命令。但是,单击可以使用任何想要的函数名,并提供要与其关联的子命令名

例如,这将为您提供子命令
import
,它将运行函数
my\u import\u func

#!/usr/bin/env python3

import click

@click.group()
def cli():
    pass

@cli.command('import')
def my_import_func():
    click.echo("Importing")

if __name__ == '__main__':
    cli()

重新定义内置名称是一个坏主意。

您可以更改任何1个字符的大小写,如def Import():。为什么必须调用它
Import
?您可以使用
def Import\密码):
。真正的问题是,为什么它需要是
import
?您可以使用
导入密码
。解决这个问题不是个好主意。有一个很好的理由不覆盖关键字,所以它是不允许的。