file-type

Python入门:argparse理解nargs='+'参数的作用

版权申诉

PDF文件

5星 · 超过95%的资源 | 127KB | 更新于2024-09-11 | 68 浏览量 | 3 下载量 举报 收藏
download 限时特惠:#9.90
"在Python入门中,argparse模块是一个强大的工具,用于解析命令行参数。当我们讨论nargs='+'这个选项时,它在argparse函数中的作用至关重要。nargs代表"number of arguments",即接受参数的数量。当设置为'+'时,它允许你接收任意数量的位置参数,并将它们作为一个列表存储。 在给出的代码示例中,`parser.add_argument('integers', metavar='N', type=int, nargs='+')`这一行,我们设置了名为`integers`的参数,它的metavar属性是'N',类型为整数,nargs设置为'+'。这意味着当你运行命令行时,可以提供一个或多个整数作为参数,这些参数会被自动打包成一个列表。 例如,如果你执行`python aaa.py 1 2 3 4`,`args.integers`将得到`[1, 2, 3, 4]`这样的列表。 接下来,`parser.add_argument('--sum', dest='accumulate', action='store_const', const=sum, default=max)`部分,是另一个参数,但它是可选的。通过`store_const`动作,当`--sum`标志被指定时,参数值被设置为内置的`sum`函数,而非默认的`max`。这允许用户选择将输入的整数求和(`python aaa.py --sum 1 2 3 4`)或找出最大值(默认行为)。 最后,`print(args)`会输出一个Namespace对象,其中包含了`accumulate`和`integers`这两个属性。当你调用`print(args.accumulate(args.integers))`时,如果指定了`--sum`,则会计算整数列表的和,否则默认计算最大值。 nargs='+'在argparse中提供了灵活处理位置参数的能力,使开发者能够轻松处理不确定数量的输入,提高了命令行脚本的实用性。理解并熟练运用这个特性对于编写可配置的命令行工具非常关键。"

相关推荐

filetype

import numpy as np import scipy.io as scio from Model.conv1D_precoder import ConvPrecoder from Model.importdata import read_data_sets,ESDataset from keras import backend as K import tf2onnx from interactx import OFDM_RFLoopback_2ant Flag_HDF5file = True def ParseArgs(args=None): import argparse parser = argparse.ArgumentParser( description = 'Train and test for direct hybrid precoding') parser.add_argument('-train', '--IsTrain', nargs = '?', type=int, default=1, #开关(1为开,0为关) help="""Set to 1 for training, 0 for testing""") parser.add_argument('--IsExport',nargs='?',type=int,default=1,help="Set to 1 for export2onnx") #开关(1为开,0为关) return parser.parse_args(args) if __name__ == '__main__': cl_args = ParseArgs() num_classes = 64 Pta=[20] epochs = 15 #运行的轮数 batch_size = 512 N_BS = 64 N_MS = 64 IsTrain=cl_args.IsTrain IsExport=cl_args.IsExport delay=None with open("../00-test/delay.txt") as file: delay=int(file.read()) for Pt in Pta: #### LOAD DATA h_train, h_test = read_data_sets( 'MIMO_dataset/DeepMIMO_dataset_train' + str(Pt) + '.mat', 'MIMO_dataset/DeepMIMO_dataset_test' + str(Pt) + '.mat', 'MIMO_dataset/DeepMIMO_dataset_train_labels.mat', 'MIMO_dataset/DeepMIMO_dataset_test_labels.mat', Flag_HDF5file,delay) n_samples, data_dim, _ = h_train.data.shape n_samples_test, _, _ = h_test.data.shape M_BSa = [8] for M_BS in M_BSa: M_MS=M_BS print('M_MS=M_BS='+str(M_BS)) precoder=ConvPrecoder(data_dim,[N_BS,N_MS,M_BS,M_MS],num_classes) if IsTrain: precoder.train(10*h_train.data, h_train.labels, 10*h_test.data, h_test.labels, epochs, batch_size) precoder.save_weights('Saved_model/saved_weights_multi_'+str(Pt)+'_M_BS_'+str(M_BS)+'_1.h5') 解释一下上面的