Zaza scored five Serie A goals in 19 games last season and also struck Juve's winner in their friendly win over West Ham at the London Stadium earlier this month.
Champions League: Guardiola handed Barca reunion with Man City
The 25-year-old was in Italy squad for Euro 2016. A permanent fee of £20 million will be automatically triggered if the striker makes a certain number of Premier League appearances this season, plus a further £3 million in contingent payments, the east London club said.
"I want to thank everyone for welcoming me... I wanted to start a new experience and I feel this is the right choice for me," Zaza told the club's website. "I have been fortunate enough to have already played at the new stadium with a different shirt. It is a beautiful stadium and I felt the warmth of the fans and this was a big reason why I wanted to join the club."
Ronaldo crowned best player in Europe
West Ham, who failed to make the Europa League group stage for the second year in a row after being eliminated by Astra Giurgiu, face Manchester City away in the league later on Sunday.
COMMENTS
Comments are moderated and generally will be posted if they are on-topic and not abusive.
For more information, please see our Comments FAQ