def _var_changes(self):
result = []<EOL>variables = self.shell.run_line_magic("<STR_LIT>", "<STR_LIT>")<EOL>if variables is None:<EOL><INDENT>return result<EOL><DEDENT>import inspect<EOL>for varname in variables:<EOL><INDENT>varobj = self.shell.user_ns.get(varname, None)<EOL>if varobj is None:<EOL><INDENT>continue<EOL><DEDENT>keep = False<EOL>for ifunc in inspectors:<EOL><INDENT>if getattr(inspect, ifunc)(varobj):<EOL><INDENT>break<EOL><DEDENT><DEDENT>else:<EOL><INDENT>keep = True    <EOL><DEDENT>if keep:<EOL><INDENT>whoid = id(varobj)<EOL>if varname not in self.who or self.who[varname] != whoid:<EOL><INDENT>result.append((varname, varobj))<EOL>self.who[varname] = whoid<EOL><DEDENT><DEDENT><DEDENT>return result<EOL>
Determines the list of variables whose values have changed since the
        last cell execution.