*args **kwargs
变长参数。Python支持可变长度的参数列表,可以通过在函数定义的时候使用args和*kwargs这两个特殊语法来实现(args和kwargs可以替换成任意你喜欢的变量名)。先来看两个可变长参数使用的例子。
1)使用args来实现可变参数列表:args用于接受一个包装为元组形式的参数列表来传递非关键字参数,参数个数可以任意,
- 使用**kwargs接受字典形式的关键字参数列表,其中字典的键值对分别表示不可变参数的参数名和值。如下例中apple表示参数名,而fruit为其对应的value,可以是一个或者多个键值对。
可变长参数慎用
以下情况多用或不得不用:
- 为函数添加装饰器
- 参数数目不确定
- 实现继承时子类调用父类某些方法时
ConfigParser
配置文件的意义在于用户不需要修改代码,就可以改变应用程序的行为,让它更好地为应用服务。
argparse
添加灵活易用的命令行参数。示例
import argparse
def ParseArgs():
#create parser
parser=argparse.ArgumentParser(description='Please input enviroment')
# add help informations to add argument
parser.add_argument('--env_id',nargs='?',default='CartPole-v0',help='select the environment')
parser.add_argument('--cpu',nargs='?',default='True',help='select the hardware')
parser.add_argument('--policy',nargs='?',default='Random',help='select the policy')
# parse args
args=parser.parse_args()
return args
if __name__="__main__"()
args=ParseArgs()
print (args.env_id)
Click
另外一个添加参数的包是click,可用示例代码如下
import click
@click.command()
@click.argument("namemark")
@click.option("--ncpu", default=mp.cpu_count(), help='The number of cores', type=int)
@click.option("--population_size", default=ARGS.population_size, help='batch size(population size)', type=int)
@click.option("--generation", default=ARGS.generation, help='the number of generation', type=int)
@click.option("--env", default='v2', type=click.Choice(['v1','v2']))
@click.option("--numparts", default=1, help="the number of parts", type=int)
@click.option("--part", default=0, help="which part", type=int)
@click.option("--phi", default=0.0001, type=float)
@click.option("--seed", default=111, type=int)
@click.option("--envtype", default="mujoco", type=click.Choice(["mujoco", "atari"]))
@click.option("--adjust", default=0, type=int)
def run(namemark, ncpu, population_size, generation, env, numparts, part, phi, seed, envtype, adjust):
pass
网友评论