I have seen many Python snippets where they write something like this:
labels, features = targetFeatureSplit(data)
ages_train, ages_test, net_worths_train, net_worths_test = train_test_split(ages, net_worths, test_size=0.1, random_state=42)
So if you have a function that returns two values like so:
def example(): return 'alice', 'bob'
You can then call this function and set it to the variable
test = example()
where test is a tuple of 'alice' and 'bob'.
You can instead assign what the function returns to two variables instead, for example,
a, b = example()
where a is 'alice' and b is 'bob'.
To answer the last bit of your question - if a function does not have a return keyword in it, then it will return
None when the function completes. Therefore for variable assigment you can only set one variable equal to what this function returns.