Retrieves a list of features that are enabled for the user. Invoking this method is equivalent to running [Is Feature Enabled](🔗) for each feature in the datafile sequentially.
This method takes into account the user `attributes
` passed in, to determine if the user is part of the audience that qualifies for the experiment.
## Version
SDK v3.0
## Description
This method iterates through all feature flags and for each feature flag invokes [Is Feature Enabled](🔗). If a feature is enabled, this method adds the feature’s key to the return list.
## Parameters
The table below lists the required and optional parameters in Python.
Parameter | Type | Description |
**user_id** _required_ | string | The ID of the user to check for access to features. |
**attributes** _optional_ | dict | A map of custom key-value string pairs specifying attributes for the user that are used for audience targeting. Non-string values are only supported in the 3.0 SDK and above. |
## Returns
A list of the keys of the features that are enabled for the user.
## Examples
This section shows a simple example of how you can use the method.
## Source files
The language/platform source files containing the implementation for Python is [optimizely.py](🔗).