Check out PyGame, a game kit for Python.
I would personally argue that Python is a nicer language than C++ for most things. There is no question that Python is the more compact language, resulting less typing and letting one view a larger part of the program at any given time. Python is also a higher-level language than C++, with all the benefits that this implies. The more precise expression of intent is a clear benefit. For example, compare:
def pickup(newItem):
totalWeight = 0
for item in player.inventory:
totalWeight += item.weight
if totalWeight + newItem.weight > 100:
print "Item is too heavy to pick up"
with this:
void pickup(Item* newItem)
{
double totalWeight = 0;
for (ItemList::iterator i = player->items.begin();
i != player->items.end(); i++)
{
Item* item = *i;
totalWeight += item->weight;
}
if (totalWeight + newItem->weight > 100)
{
print("Item is too heavy to pick up");
}
}
I know which one is easier to read and easier to maintain. In game development, being able to play freely with game rules is important, so you want something where you can be nimble and experiment with different designs. Game logic should be light and easily modified, and if you don’t have to compile hundreds of thousands of lines of code to tweak a setting, that’s a huge benefit.
These are some of the most important reasons why games today tend to express their game logic in scripts. The latest incarnation of Ultima Online, for example, uses a server back end written in Python, with the more processing-intensive stuff written in C or C++; the client, as far as I know, is pure C or C++.
Python interfaces very well with C and C++. There are ready-made bindings for game-related C/C++ toolkits such as OpenGL, DirectX, SDL (*), OGRE (the open-source 3D engine) etc.
(*) SDL is a portable, multi-platform multimedia library. I recommend it over straight DirectX. On Windows it uses DirectX internally anyway.