<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def evaluate_service_changes(services, envs, repo_root, func):
 """ Given a dict of services, and a list of environments, apply the diff function to evaluate the differences between the target environments and the rendered templates. Sub-services (names with '.' in them) are skipped. """

    for service_name, service in services.iteritems():

        for env_category in service['environments']:
            if env_category not in get_env_categories(envs):
                logger.debug('Skipping not-included environment `%s` for service `%s`',
                             env_category, service_name)
                continue

            environment = generate_test_environment_name(env_category)

            cf_client = get_cloudformation_client(service_name, environment)

            func(service_name, service, environment, cf_client, repo_root)