data types the easiest way to check whether something is valid identifier is to try to assign to it in an interactive python interpreter or in idle' python shell window here are some examplesstretch-factor syntaxerrorcan' assign to operator miles syntaxerrorinvalid syntax str legal but bad 'impot syntaxerroreol while scanning single-quoted string l_impot when an invalid identifier is used it causes syntaxerror exception to be raised in each case the part of the error message that appears in parentheses variesso we have replaced it with an ellipsis the first assignment fails because "-is not unicode letterdigitor underscore the second one fails because the start character is not unicode letter or underscoreonly continuation characters can be digits no exception is raised if we create an identifier that is valid--even if the identifier is the name of built-in data typeexceptionor function--so the third assignment worksalthough it is ill-advised the fourth fails because quote is not unicode letterdigitor underscore the fifth is fine integral types ||python provides two built-in integral typesint and bool both integers and booleans are immutablebut thanks to python' augmented assignment operators this is rarely noticeable when used in boolean expressions and false are falseand any other integer and true are true when used in numerical expressions true evaluates to and false to this means that we can write some rather odd things--for examplewe can increment an integeriusing the expression +true naturallythe correct way to do this is + integers |the size of an integer is limited only by the machine' memoryso integers hundreds of digits long can easily be created and worked with--although they will be slower to use than integers that can be represented natively by the machine' processor the standard library also provides the fractions fraction type (unlimited precision rationalswhich may be useful in some specialized mathematical and scientific contexts dealing with syntax errors