Использование связанного имени аргумента внутри функции 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)
Другие вопросы по тегам