I'm trying to learn send method for generators but i'm confused about its functionality. Below is the code . I want to understand why do we need to initialize generator by passing 'None' value or using next method (print_successive_primes)--Both give same result? But if i normally use generator (in case solve_number_10) i just simply pass argument and generator initializes itself.
i've read this answer here python generator "send" function purpose?
but it doesn't clear my doubt
import math
def is_prime(number):
    if number > 1:
        if number == 2:
            return True
        if number % 2 == 0:
            return False
        for current in range(3, int(math.sqrt(number) + 1), 2):
            if number % current == 0: 
                return False
        return True
    return False
def get_primes():
    number = yield
    #print(number)
    while True:
        if is_prime(number):
            number = yield number
        number += 1
def print_successive_primes(iterations, base=10):
    prime_generator = get_primes()
    #print(next(prime_generator))
    print(prime_generator.send(None))
    #print(prime_generator.send(12))
    for power in range(iterations):
        print(prime_generator.send(base ** power))
print_successive_primes(4)
####
def solve_number_10():
    # She *is* working on Project Euler #10, I knew it!
    total = 2
    for next_prime in get_primes(3):
        if next_prime < 800000:
            total += next_prime
        else:
            print(total)
            return
