As of NLTK 3.2.3, there's a public method for doing this:
wordnet.synset_from_pos_and_offset(pos, offset)
In earlier versions you can use:
wordnet._synset_from_pos_and_offset(pos, offset)
This returns a synset based on it's POS and offest ID. I think this method is only available in NLTK 3.0 but I'm not sure.
Example:
from nltk.corpus import wordnet as wn
wn.synset_from_pos_and_offset('n',4543158)
>> Synset('wagon.n.01')
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…