Использование связанного имени аргумента внутри функции python
Мой текущий хакерский способ печати нескольких массивов в столбцах использует аргументы ключевого слова для маркировки вывода:
def table(**data_dict):
n=([len(x) for x in data_dict.values()]) # # data for each var
N=max(n)
# prep data & print headings
prntstr=''
for i,var in enumerate(data_dict):
# convert lists to str for printing, padding as needed
data_dict[var] = ['{:.5g}'.format(x) for x in data_dict[var]] + ['']*(N-n[i])
prntstr=prntstr+f'| {var:^8} |'
print(prntstr,'-'*12*len(data_dict),sep='\n'); # print heading
# print data
for i in range(0,N):
prntstr=' '.join(f'{data_dict[var][i]:>11}' for var in data_dict)
print(prntstr)
и используется
rho=[1.5,0.11]
Fx=[-14.2]
table(rho=rho,T=[665,240],Fx=Fx)
производство
| rho || T || Fx |
------------------------------------
1.5 665 -14.2
0.11 240
Есть ли другой способ сделать это, который может использовать связанное имя аргумента (например, rho) и избегать повторения (например, rho = rho) для аргументов, не являющихся ключевыми словами, чтобы можно было просто ввести
table(rho,T=[665,240],Fx)
? Заранее спасибо.
1 ответ
Используйте RHO=rho, где RHO — это заголовок в выходных данных.
Заменять
с
table(RHO=rho,T=[665,240],Fx=Fx)
Если это неприемлемо, вам придется принять первый аргумент
Заменять
def table(**data_dict)
с
def table(RHO, **data_dict):
data_dict['rho'] = RHO
и вызовите следующим образом:
Заменять
table(rho=rho,T=[665,240],Fx=Fx)
с
table(rho,T=[665,240],Fx=Fx)