I've learned a lot from reading Twisted and the CPython internals. The newer (2008-) code in Twisted is generally very good.
Another strategy is to skim the source code for your dependencies, without worrying about whether the code is good or not. You'll still get a good idea of the scope of the problem the library is solving, and whether it looks like the authors knew what they were doing. You'll have a crude map of the code in your code, useful when you run into bugs later.
When I was new to python I did exactly what you said, and discovered the following facts:
1. Reading a library you are using, even if it's a standard library like smtplib is fun and makes you smarter and your code better.
2. Python is such a joy to read, unlike some other languages.
3. Some libraries (I'll mention smtplib again) are such a mess, and yet reasons 1 + 2 still make it easy for you to learn from them, while also learning what not to do.
Twisted isn't very Pythonic, in that very few Python code-bases grow to have as much code as Twisted does, and the coping mechanisms Twisted has evolved to keep that code manageable wind up looking like Java because that language is also designed to make large projects manageable.
The number of classes and interfaces in Twisted is a bit of a stumbling block, but I've never come across anyone with a better, more "Pythonic" way to express the same ideas or provide the same flexibility. The ABCs introduced in modern Python are inferior to the interfaces Twisted uses, and the most recent PEP I've seen for Futures is but a pale shadow of Twisted's Deferreds.
Another strategy is to skim the source code for your dependencies, without worrying about whether the code is good or not. You'll still get a good idea of the scope of the problem the library is solving, and whether it looks like the authors knew what they were doing. You'll have a crude map of the code in your code, useful when you run into bugs later.