language questions the limits of my language means the limits of my world - wittgenstein closure what does the following program printand whyincrement_by_i lambda xx for in range ( )printincrement_by_i [ ]( solutionthe program prints (= rather than the (= than might be expected this is because the the functions created in the loop have the same scope they use the same variable nameand consequentlyall refer to the same variableiwhich is at the end of the loophence the (= there are many ways to get the desired behavior reasonable approach is to return the lambda from functionthereby avoiding the naming conflict def create_increment_function ( )return lambda yy increment_by_i create_increment_function (ifor in range ( )printincrement_by_i [ ]( shallow and deep copy describe the differences between shallow copy and deep copy when is each appropriateand when is neither appropriatehow is deep copy implementedsolutionfirstwe note that assignment in python does not copy--it simply variable to target for objects that are mutableor contain mutable itemsa copy is needed if we want to change the copy without changing the original for exampleif [ and we assign to bi athen if we change be append( )then will also change there are two ways to make copyshallow and deep these are implemented in the copy modulespecifically as copy copy(xand copy deepcopy(xa shallow copy constructs new compound object and then (to the extent possibleinserts references into it to the objects found in