Agile developers recognize that it is unrealistic to assemble a complete set of requirements at the start of a project.
Requirements changes during development are a normal part of the process. Agile development accepts changes as a standard part of the iteration (mini-project) process. Ubiquitous use of automated test suites dramatically lowers the risk in making changes. Lower risk allows the impact of any change can be easily contained. Automated tests give developers rapid feedback if changes break any other part of the application.
The customer asks for a change during development because the customer sees business benefit in it. Customers do not ask for changes just to annoy the developers, although non agile developers frequently act as if that were the sole motivation.
Changes after implementation are dealt with in exactly the same way as standard iterations. Again the automated tests lower risk in the process. Automated tests support the agile development team by confirming that they changed only what they set out to change.