I think you don't need your first line. From a quick read of the docs, FeatureLocation seems to be more used in creating features at specific locations than testing them. Consequently its expecting a simple integer, but you're giving it an object.
for example, the following works with my test data:
recs = [rec for rec in SeqIO.parse('my_genbank.gb', "genbank")]
feats = [feat for feat in rec.features if feat.type == "CDS"]
for feat in feats:
if 456 in feat: # Notice its only a simple integer
print feat
# ----- Output -----
type: CDS
location: [7:457](+)
qualifiers:
Key: codon_start, Value: ['1']
Key: inference, Value: ['ab initio prediction:Prodigal:2.60', 'protein motif:Pfam:PF06841.6']
Key: locus_tag, Value: ['PAU_01961']
Key: product, Value: ['T4-like virus tail tube protein gp19']
Key: transl_table, Value: ['11']
Key: translation, Value: ['MSTTADQIAVQYPIPTYRFVVTIGDEQMCFQSVSGLDISYDTIEYRDGVGNWLQMPGQRQRPTITLKRGIFKGQSKLYDWINSISLNQIEKKDISISLTDETGSNLLITWNIANAFPEKLTAPSFDATSNEVAVQEISLKADRVTVEFH']
Incidentally, you can use normal python 'slicing' nomenclature to extract subregions of a genbank and write them out in any format you like with SeqIO.write. I exploit this for creating sub-setted genbanks in this script for instance:
https://github.com/jrjhealey/bioinfo-tools/blob/master/Genbank_slicer.py
Particularly line 121.