It seems unlikely that you would ever need a solution like this , and it would probably be relatively fragile but, borrowing from this answer you could create a solution like this using inspect:
import inspect
def named_min(*args):
min_val = min(args)
callers_local_vars = inspect.currentframe().f_back.f_locals.items()
named_var = [var_name for var_name, var_val in callers_local_vars if var_val is args[args.index(min_val)]][0]
if args.count(min_val) > 1:
named_var = 'multiple'
return min_val, named_var
Node_23n3 = 0
Node_23n4 = 1
OPN_24n4, name = named_min(Node_23n3, Node_23n4)
print(OPN_24n4, name)
Node_23n4 = 0
OPN_24n4, name = named_min(Node_23n3, Node_23n4)
print(OPN_24n4, name)
Node_23n3 = 2
OPN_24n4, name = named_min(Node_23n3, Node_23n4)
print(OPN_24n4, name)
Node_23n5 = -1
OPN_24n4, name = named_min(Node_23n3, Node_23n4, Node_23n5)
print(OPN_24n4, name)
This does do what you're after:
0 Node_23n3
0 multiple
0 Node_23n4
-1 Node_23n5
but I certainly wouldn't recommend it.