I find this question rather enigmatic. As Nasser notes in a comment every Symbol has a context. You should be aware that Symbols are created during parsing. See: http://mathematica.stackexchange.com/q/8295/121. You also say "The following works" so I wonder why you are not using that. Perhaps you want: SetAttributes[call, HoldAll]; call[file_String, function_, args___] := Block[{$ContextPath, function}, Get[file]; function[args]] Use would be: call["test.m", test, "thing to print"] > thing to print Note that the symbol ``Global`test`` is created as described in the linked Q&A above, but it is not defined. ---------- On reflection, perhaps you just want to load definitions into a private context (e.g. ``test` ``) that is not on the `$ContextPath`. That can be done like this: Block[{$ContextPath = {"test`", "System`"}, $Context = "test`"}, Get["test.m"]] This is essentially equivalent to `BeginPackage` but it works as a single line of code. The defined function is then called with ``test`test``: test`test["thing 2"] > thing 2