You are talking about different things. In your home, things that connect to the router get an address in the home network, usually in a 192.168.*.* range. Your router is itself connected to the internet at an address assigned by your ISP, and acts as a bridge between your own network and internet. It does a bit of magic with the addresses and the connections, so all devices in your home share one single address as seen from the internet. The router remembers which device in your home talks to which server on the internet, so when the server answers back the router can send the answer to the proper device. However this is true only for connections initiated from your home devices. The random computer connected to the Internet can't connect to your devices (which is fortunate otherwise they would have been pwned already....).
So to connect to your server from the internet you need several things:
- a fixed address for your Rpi on your home network. Since, once it is allocated, the router tend to reassign it to the same device, this is probably already the case.
- a specific configuration in the router to tell it to allow connections from the outside on specific ports (NAT addressing). In practice this is mostly telling the router that connection attempts from the outside on some given ports (80 and 443, likely) should be routed to the address of the Rpi. Make sure your code is robust, and that having your Rpi pwned has little consequences.
- at that point you can connect to the server from the internet, if you know your current Comcast address. To make this a bit easier, there are dynamic DNS server out there (free or not). You subscribe to a name, says kodipythonserver, and regularly update your IP (which can be as simple a issuing a regular http request to the site, using a cron job). Then outside users can connect to your systems using kodipythonserver.dynamic-dns-service-name.com, and this will be resolved to your last known address.