I would recommend using functions to control any multiplayer aspect of the game. Later when its time to incorporate python, or a plugin, or even local multiplayer, you could change the way you achieved multiplay, without having to worry about it affecting anything else.
For example:
you could make either a construct function or a python function, whichever you're most comfortable with:
GetPlayerInputX, this function would take in a value for the player number, and output a value for how much the x axis of the control for player is being applied
the inner workings of the GetPlayerInputX could change, or expand whenever you needed them to, without affecting any other code. You could make getplayerinputx gather information from xbox360 controllers, using the player number to choose which controller, and returning the Left Analog X Axis. Down the line when a plugin comes out, player number might refer to an index in a list of ip addresses, and the function would output information from a particular packet. You could even have an AI control the X Axis. The idea is that you can change this function, and the rest of the game that needs to GetPlayerInputX, doesn't need to care about how it does it.
It would be best to also have a SetPlayerInputX in this example. This concept of protecting code from changes to other pieces of code is called Information Hiding, or Encapsulation. It's an Object-Oriented Design Principle. Try googling those terms if it's something you're interested in learning more about.
One more thing. I have zero experience with online multiplayer code. However, from what I understand, optimization is a more important issue when dealing with online code, so it's possible you may have to alter other parts of your cap to call a function like GetPlayerInputX less often than you will be able to for offline play. But you should need a lot less alterations to your code if you use functions.