diff --git a/debugging/__pycache__/pdb.cpython-312.pyc b/debugging/__pycache__/pdb.cpython-312.pyc new file mode 100644 index 0000000..e3a1bab Binary files /dev/null and b/debugging/__pycache__/pdb.cpython-312.pyc differ diff --git a/debugging/pdb.py b/debugging/pdb.py new file mode 100644 index 0000000..44080e9 --- /dev/null +++ b/debugging/pdb.py @@ -0,0 +1,7 @@ +import pdb + +def add(num1 , num2): + pdb.set_trace() + return num1 + num2 + +add(4, 'hfdksfsl') \ No newline at end of file diff --git a/debugging/wiki.txt b/debugging/wiki.txt new file mode 100644 index 0000000..e69de29 diff --git a/generators/fibonacci.py b/generators/fibonacci.py new file mode 100644 index 0000000..e9f8c2f --- /dev/null +++ b/generators/fibonacci.py @@ -0,0 +1,11 @@ +def fib(number): + a = 0 + b = 1 + for i in range(number): + yield a + temp = a + a = b + b = temp + b + +for x in fib(20): + print(x) \ No newline at end of file diff --git a/generators/generator.py b/generators/generator.py new file mode 100644 index 0000000..86ac8c6 --- /dev/null +++ b/generators/generator.py @@ -0,0 +1,22 @@ +class MyGen(): + + current = 0 + def __init__(self, first, last): + self.first = first + self.last = last + + def __iter__(self): + return self + + + def __next__(self): + if MyGen.current < self.last: + num = MyGen.current + MyGen.current += 1 + return num + raise StopIteration + +gen = MyGen(0,100) + +for i in gen: + print(i) \ No newline at end of file diff --git a/generators/special_for.py b/generators/special_for.py new file mode 100644 index 0000000..a7bda84 --- /dev/null +++ b/generators/special_for.py @@ -0,0 +1,10 @@ +def special_for(iterable): + iterator = iter(iterable) + + while True: + try: + print(next(iterator)) + except StopIteration: + break + +special_for([1,2,3]) \ No newline at end of file diff --git a/generators/wiki.txt b/generators/wiki.txt index e69de29..16614f6 100644 --- a/generators/wiki.txt +++ b/generators/wiki.txt @@ -0,0 +1,42 @@ +-> What are generators? + + Generators are used to generate range of values + without using extra space. + + for example, range(1,100) creates number from 1 to + 100 but in this the procedure is as follows: + + -> initialize with value 1. + -> returns the value. + -> increment it by one. + -> Repeat this same process from step 2, + until all values are generated with + the given range. + + + * generators is a iterator but iterator + is not necessarily a generator. + +-> How to create your own generators? + + for ex: + + def generator_function(num): + for i in range(num): + yield i + + g = generator_function(10) + next(g) + next(g) + print(next(g)) + + Two keywords are used here: + -> yield: This is used to make functions a + generator. + + -> next: This is used to get the next value from + generator function + + Note that unlike creating a list and then returning + the range of values, generators don't take extra + space to have range of values. \ No newline at end of file