statementit returns value like any other function call (its return value is nonethe default return value for functions that don' return anything meaningful) print('spam'spam print(xnone print is function call expression in but it is coded as an expression statement also keep in mind that although expressions can appear as statements in pythonstatements cannot be used as expressions statement that is not an expression must generally appear on line all by itselfnot nested in larger syntactic structure for examplepython doesn' allow you to embed assignment statements (=in other expressions the rationale for this is that it avoids common coding mistakesyou can' accidentally change variable by typing when you really mean to use the =equality test you'll see how to code around this restriction when you meet the python while loop in expression statements and in-place changes this brings up another mistake that is common in python work expression statements are often used to run list methods that change list in placel [ append( [ append is an in-place change howeverit' not unusual for python newcomers to code such an operation as an assignment statement insteadintending to assign to the larger listl append( print(lnone but append returns nonenot so we lose our listthis doesn' quite workthough calling an in-place change operation such as appendsortor reverse on list always changes the list in placebut these methods do not return the list they have changedinsteadthey return the none object thusif you assign such an operation' result back to the variable nameyou effectively lose the list (and it is probably garbage-collected in the process!the moral of the story isdon' do this--call in-place change operations without assigning their results we'll revisit this phenomenon in the section "common coding gotchason page because it can also appear in the context of some looping statements we'll meet in later expression statements