Generar variable de un return sin ejecutar funcion

Buen dia gente, espero que esten todos mas que bien, a ver si me pueden dar una mano, no se si es que estoy haciendo algo mal por falta de conocimiento o no es la manera correcta.

estoy generando varias funciones donde estas devuelven datos mediante sus return, el problema es q al generar una variable de esta funcion automaticamente se me ejecuta la funcion y no es lo q quiero, solo quiero almacenar ese valor.

aca pongo un ejemplo q obviemos su incoherencia pero representa el problema q estoy teniendo:

def paso_1():
nombre = “Hugo”
if nombre == “Hugo”:
print(nombre)
return paso_2()
else:
pass

def paso_2():
apellido = “pepito”
print(apellido)
return apellido

paso_1()
def_paso_2 = paso_2()

el output que me da esto es:

Hugo
pepito
pepito

el problema es que yo no quiero que me ejecute 2 veces la segunda funcion, solo quiero que la funcion 1 tenga la postestad de ejecutar o no el paso 2.

el problema es que cuando intento guardar el string de la funcion 2 para usar a futuro la linea “def_paso_2 = paso_2()” me ejecuta nuevamente la funcion 2… claramente lo entendi mal o no tengo aun el conocimiento de como guardar la respuesta de un return en una variable.

Podrian darme una mano con esto por favor?

desde ya mil gracias! saludos!!

Me auto contesto:

mi mal comprencion o falta de entender fue que cuando una variable se ejecuta con igualdad a una funcion esta si o si siempre se va a ejecutar, por ende, lo que yo debia hacer era lo siguiente:

Def_paso_2 = paso1()

de esta manera ejecuto la funcion uno y por consecuente se ejecutara la segunda funcion y asi se conserva en la variable el return de la segunda funcion.