การใช้เครื่องกำเนิดไฟฟ้ามันค่อนข้างง่าย:
signal = ['→Signal value←']
def pniter( iter, signal=signal ):
iA = iB = signal
for iC in iter:
if iB is signal:
iB = iC
continue
else:
yield iA, iB, iC
iA = iB
iB = iC
iC = signal
yield iA, iB, iC
if __name__ == '__main__':
print('test 1:')
for a, b, c in pniter( range( 10 )):
print( a, b, c )
print('\ntest 2:')
for a, b, c in pniter([ 20, 30, 40, 50, 60, 70, 80 ]):
print( a, b, c )
print('\ntest 3:')
cam = { 1: 30, 2: 40, 10: 9, -5: 36 }
for a, b, c in pniter( cam ):
print( a, b, c )
for a, b, c in pniter( cam ):
print( a, a if a is signal else cam[ a ], b, b if b is signal else cam[ b ], c, c if c is signal else cam[ c ])
print('\ntest 4:')
for a, b, c in pniter([ 20, 30, None, 50, 60, 70, 80 ]):
print( a, b, c )
print('\ntest 5:')
for a, b, c in pniter([ 20, 30, None, 50, 60, 70, 80 ], ['sig']):
print( a, b, c )
print('\ntest 6:')
for a, b, c in pniter([ 20, ['→Signal value←'], None, '→Signal value←', 60, 70, 80 ], signal ):
print( a, b, c )
โปรดทราบว่าการทดสอบที่มี None และค่าเดียวกับค่าสัญญาณยังคงใช้งานได้เนื่องจากการตรวจสอบค่าสัญญาณใช้ "is" และสัญญาณเป็นค่าที่ Python ไม่อยู่ภายใน สามารถใช้ค่าเครื่องหมายซิงเกิลตันเป็นสัญญาณได้ซึ่งอาจทำให้รหัสผู้ใช้ง่ายขึ้นในบางสถานการณ์