Lists and dictionaries are mutable. Strings, integers, and tuples are immutable. Variables merely reference objects in memory. Objects can be anything, strings, integers, tuples, list, dictionaries, custom classes, etc., variables merely reference them. Variables do not hold any data of any sort besides a pointer to an object somewhere.
To pass a string "by reference" you would simply do:
Since strings are immutable you cannot change them, you can only reassign them, like this script does. Passing mutable variables by reference can be tricky and personally I consider it to be bad coding practice. Python should be succinct, but it should also be easy to understand and normally modifying lists and dictionaries by reference in a function is very confusing for someone else to read. And when you and other people are reusing code, readability is paramount.
variable += "spam"
test = "Ni!"
test = myFunction(test)