There is no arcpy method or property that can translate zip codes to what you want. You need to find a data source that contains the conversion and perform a "join" to your existing dataset
If you had the data matching zipcodes to cities and states you would simply perform a join. however if all your data is geospatial (polygons etc..) and you wish to update the fields you could perform the following:
however if you have the cities and states as shapefiles
adding the fields would be done along these lines:
# Import system modules
# Set environment settings
arcpy.env.workspace = "C:/data/"
# Set local variables
inFeatures = "zipcodes.shp"
fieldName1 = "city"
field_length1 = 8
fieldName2 = "state"
fieldLength2 = 10
# Execute AddField twice for two new fields
arcpy.AddField_management(inFeatures, fieldName1, "TEXT",field_length=field_length1)
arcpy.AddField_management(inFeatures, fieldName2, "TEXT", field_length=fieldLength2)
once the fields are added they could be updated using something similar to this: