Как писать правильнее?
первый вариант читабелнее (в терминальных случаях является  безальтернативно верным)
но он порождает новую переменную в контексте вызова, что сказывается как на времени так и на памяти: такой кейс вам приведу

import datetime
def fun(a,b):
    return a + b
def fun2(arg1=1, arg2=2):
    return arg1 + arg2
print("вариант 1")
for j in range(10):
    start = datetime.datetime.now()
    for i in range(10000):
        a=fun(5, 6)
        fun2(arg2=a)
    end = datetime.datetime.now()
    print(end - start)
print("===================")
print("вариант 2")
for j in range(10):
    start = datetime.datetime.now()
    for i in range(10000):
        fun2(arg2=fun(5, 6))
    end = datetime.datetime.now()
    print(end - start) 
вывод:
вариант 1
0:00:00.006048
0:00:00.002219
0:00:00.001937
0:00:00.001955
0:00:00.001893
0:00:00.001886
0:00:00.001879
0:00:00.001891
0:00:00.001895
0:00:00.001887
===================
вариант 2
0:00:00.001541
0:00:00.001551
0:00:00.001551
0:00:00.001546
0:00:00.001564
0:00:00.001535
0:00:00.001537
0:00:00.001546
0:00:00.001516
0:00:00.001704

имеем в среднем раза в полтора разницу по скорости

что вам важнее в данный момент сильно зависит от конкретной задачи
Если говорить о красоте кода, то первый вариант лучше.