我有大量的变量和参数定义。有没有办法让它占用更少的线,或者我坚持使用它?
# Standard input module to absorb commands from CLI
parser = argparse.ArgumentParser(description='User inputs source and destination tables to transfer data.')
parser.add_argument('src_table', help='Source table not supplied.', type=str)
parser.add_argument('dest_table', help='Destination table not supplied.', nargs='?', type=str) # optional arg
parser.add_argument('instance_object', help='New item not supplied.', nargs='?', type=str)
parser.add_argument('instance_id', help='Item ID not supplied.', nargs='?', type=int)
args = parser.parse_args()
src_table = args.src_table
dest_table = args.dest_table
答案 0 :(得分:0)
抵制创造大量变数的冲动。请改为通过args
访问这些值。
但是,可能将args
的所有属性转换为全局变量:
globals().update(**vars(args))
但这污染了全局命名空间。
更好的选择是将args
传递给函数:
def main(src_table, dest_table, instance_object, instance_id):
print(src_table, dest_table, instance_object, instance_id)
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser(description='User inputs source and destination tables to transfer data.')
parser.add_argument('src_table', help='Source table not supplied.', type=str)
parser.add_argument('dest_table', help='Destination table not supplied.', nargs='?', type=str) # optional arg
parser.add_argument('instance_object', help='New item not supplied.', nargs='?', type=str)
parser.add_argument('instance_id', help='Item ID not supplied.', nargs='?', type=int)
args = parser.parse_args()
main(**vars(args))
因此,在main
内,所有arg
属性都可以作为局部变量访问。以这种方式构建程序允许您的代码既可以用作脚本,也可以作为模块导入。这使得您的代码更加通用,因此比“污染”更好。具有大量变量的全局命名空间。