One of the most popular features of ROS 1 is the ability of writing robot applications in a variety of languages. Starting with Alpha 4, ROS 2 provides a Python API that can be used for communicating with other nodes written in different languages.
The rclpy module enables developers to use the ROS 2 API from Python. As of Alpha 4, rclpy is still under development and its API might change, but for now the basics (publishers and subscriptions) can be accessed from Python.
rclpy is part of the standard ROS 2 distribution, so it'll be installed alongside the rest of the ROS 2 packages.
The two classic ROS 2 examples of a "talker" and a "listener" have been implemented in Python using rclpy. The source code is available here.
Open two terminals, source the appropriate setup.*/local_setup.* file in the terminals, and run ros2 run demo_nodes_py talker in one and ros2 run demo_nodes_py listener in the other.
Once executed you should see the following on the terminal running the listener:
I heard: [Hello World: 1]
I heard: [Hello World: 2]
I heard: [Hello World: 3]
I heard: [Hello World: 4]
I heard: [Hello World: 5]
I heard: [Hello World: 6]
I heard: [Hello World: 7]
I heard: [Hello World: 8]
I heard: [Hello World: 9]
I heard: [Hello World: 10]Since rclpy uses the underlying ROS 2 infrastructure, Python programs that use rclpy can also communicate with applications written in C++, even if they use a different DDS vendor and are running on a different operating system.