Как вернуть результат рекурсивной функции в переменную?
А если очень хочется разобраться с рекурсией, то вот:import os


def SearchDir(path, z=[]):
    if os.path.exists(path):
        if os.listdir(path):
            for d in os.listdir(path):
                if os.path.isdir(os.path.join(path, d)):
                    z += [(os.path.join(path, d))]
                    SearchDir(os.path.join(path, d), z)
        else:
            return print('The directory is empty')
    else:
        return print('The directory does not exist')

    return z

path = r'f:\Python-pyramid\farm'
print(SearchDir(path))
Но вы видите, что код очень непричёсанный, да? Слишком много лишнего написано, да и return print удивляет.
пхп стайл
используй https://docs.python.org/3/library/os.html#os.walk
принт не нужно писать в return