re extra ports -
you can add input ports by clicking the LHS blue square and selecting the correct data type. Ditto output on the RHS. You can rename the ports to something meaningful and these are the variable names used in the script (don't use Python reserved words). Output ports must be declared global.
Python does have drag and drop, but slightly different to XPresso. If I had my code in a Python tag and wanted to control a cube's Y size, but didn't know the correct syntax, I can drag the relevant field into the Python window and it gives
Cube[c4d.PRIM_CUBE_LEN,c4d.VECTOR_Y]
then I'd edit the cube name to what my cube was called.