module in xnot the built-in scopereduce is built-in in function annotationsavailable in ( and later)are syntactic embellishments of function' arguments and resultwhich are collected into dictionary assigned to the function' __annotations__ attribute python places no semantic meaning on these annotationsbut simply packages them for potential use by other tools recursive functions call themselves either directly or indirectly in order to loop they may be used to traverse arbitrarily shaped structuresbut they can also be used for iteration in general (though the latter role is often more simply and efficiently coded with looping statementsrecursion can often be simulated or replaced by code that uses explicit stacks or queues to have more control over traversals functions should generally be small and as self-contained as possiblehave single unified purposeand communicate with other components through input arguments and return values they may use mutable arguments to communicate results too if changes are expectedand some types of programs imply other communication mechanisms functions can send back results with return statementsby changing passed-in mutable argumentsand by setting global variables globals are generally frowned upon (except for very special caseslike multithreaded programsbecause they can make code more difficult to understand and use return statements are usually bestbut changing mutables is fine (and even useful)if expected functions may also communicate results with system devices such as files and socketsbut these are beyond our scope here test your knowledgeanswers