IDL does not have anything equivalent to that functionality you mention from Python. The dynamic handling of argument expressions in things like STRING and HELP are built directly into those specific (C code) sub-routines. There's nothing magic happening in IDL.
IDL arguments are not tightly typed nor do they define what size the argument needs to be. So the argument provided can be anything and it is up to the function to parse it properly. Something like this:
pro printValues, value
foreach val, value do print,val
end
a = [1,2,3]
printValues,a
;IDL print,
;1
;2
;3
end