Debouncing is just the matter of putting a little "Pause" in the program. This little pause will allow accidental "double pushing", "electrical connections", that are iffy, and other uncontrollable human factors to be "softened" out.

Loop:

if GPIO.1 = 0 Not pushed goto Loop (or use some kind of interupt)
pauseus 1000 (Pause 100 microseconds)
while GPIO.1=1 endwhile (Button released)
Do your program stuff here
goto Loop


You can adjust your pauseus to whatever fits your need to your project.
When you use a interput, you dont want to interupt a bunch of times, so you can "debounce" the button, so that the interput only works 1 time ever 1000 microseconds.

Dwayne