Python is the most popular programming language among the open-source community and has gained remarkable success in scientific computing, AI applications, and notable apps such as Spotify and Instagram. The language is large, complex, and dynamic by design. Program analysis is an important way to ensure software quality and security but it is rather difficult for this emerging language. This thesis proposes several techniques to understand better and solve the practical problems in Python software systems.