Why does PyCLIPS function Xxx differ from CLIPS statement xxx?

It might be a bug, of course. But sometimes such differences depend on the implementation of PyCLIPS as a layer between Python and the API that CLIPS exposes to the C language. PyCLIPS does not necessarily behave like the CLIPS shell itself, however it's possible to directly interact with the underlying CLIPS engine in a very similar way using the SendCommand() function. There is a limitation for SendCommand(), though: it only examines the first part of the command, that is either the first symbol or the first expression enclosed in the outermost brackets. This means that issuing a command like:

clips.SendCommand("(assert (spam)) and egg")

will only send the command "(assert (spam))" to CLIPS, and forget the rest. But SendCommand() closely mimics the behaviour of the CLIPS shell, and if you try to supply the same command to CLIPS, you will notice exactly the same reaction.