I audit both Solidity and Vyper, and developers coming from Solidity often assume Vyper is just "Python-flavored Solidity." It is not. Vyper makes deliberate language-design choices that remove entire bug classes by making them impossible to write, and it removes some features you might miss. Here is what actually changes for security when you move between them.

Vyper's thesis: less power, fewer footguns

Solidity is a powerful, flexible language, and flexibility is where bugs live. Vyper's entire design philosophy is the opposite: be deliberately less expressive so that dangerous patterns are not just discouraged but unrepresentable. You cannot misuse a feature that does not exist.

That tradeoff is the whole story. Vyper gives up power to take away footguns. Whether that is good depends on what you are building, but for a developer it is important to know which footguns it removes, because it changes what you have to check.

What Vyper removes, and the bugs that go with it