【Python】Arg and kwargs

*args **kwargs

变长参数。Python支持可变长度的参数列表,可以通过在函数定义的时候使用args和*kwargs这两个特殊语法来实现(args和kwargs可以替换成任意你喜欢的变量名)。先来看两个可变长参数使用的例子。

1)使用args来实现可变参数列表:args用于接受一个包装为元组形式的参数列表来传递非关键字参数,参数个数可以任意,

  1. 使用**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

你可能感兴趣的:(【Python】Arg and kwargs)