Connecting two computers without server
You can do file-sharing over the internet, by creating network shares and making them visible over the internet. No third-party product is required, or Python, only setting correctly the router.
Opening file-sharing over the internet requires port-forwarding 4 ports from the router to your computer (link). (I would recommend using a very good password for all your network shares.)
You may find the public IP address of your router by using services such as whatismyipaddress or its alternatives, which your friend can use to connect to your shares.
Your problem would be that the public IP address of your router may change in time (unless your ISP gives you a static one). You may avoid this problem by using a Dynamic DNS server such as Dynu. Your router may be able to do this for you. This will let your friend connect to your computer using a name, rather than an IP address.