I've added the ability in my own configuration to use lambda functions
that evaluate to a string as babel default header arguments, instead of
just the plain strings currently allowed. Would anyone else be
interested in this feature? Shall I prepare a patch?
There are a number of use cases for this, but to give you an idea,
here's one I'm using myself.
(setq org-babel-default-header-args:latex
`((:file . (lambda ()
(concat "img/"
(sha1 (org-element-property :value
(org-element-at-point)))
(by-backend '((html . "-html") (t . "-org")))
".svg")))))
This computes a filename based on the hash of the block contents.
Matt