we create an inner helper functionprint_verbosewhich will print messages only if the verbose key has been set this function keeps code readable by encapsulating this functionality into single location in common casesassuming the files in question existthis function could be called asaugmented_move("move_here""one""two"this command would move the files one and two into the move_here directoryassuming they exist (there' no error checking or exception handling in the functionso it would fail spectacularly if the files or target directory didn' existthe move would occur without any outputsince verbose is false by default if we want to see the outputwe can call it withaugmented_move("move_here""three"verbose=truemoving three this moves one file named threeand tells us what it' doing notice that it is impossible to specify verbose as positional argument in this examplewe must pass keyword argument otherwisepython would think it was another filename in the *filenames list if we want to copy or ignore some of the files in the listinstead of moving themwe can pass additional keyword argumentsaugmented_move("move_here""four""five""six"four="copy"five="ignore"this will move the sixth file and copy the fourthbut won' display any outputsince we didn' specify verbose of coursewe can do that tooand keyword arguments can be supplied in any orderaugmented_move("move_here""seven""eight""nine"seven="copy"verbose=trueeight="ignore"copying seven ignoring eight moving nine