You can save lines in ipython using %save:
Usage:
%save [options] filename n1-n2 n3-n4 ... n5 .. n6 ...
Options:
-r: use ‘raw’ input. By default, the ‘processed’ history is used, so that magics are loaded in their transformed version to valid Python. If this option is given, the raw input as typed as the command line is used instead.
-f: force overwrite. If file exists, %save will prompt for overwrite unless -f is given.
-a: append to the file instead of overwriting it.
This function uses the same syntax as %history for input ranges, then saves the lines to the filename you specify.
It adds a ‘.py’ extension to the file if you don’t do so yourself, and it asks for confirmation before overwriting existing files.
If -r option is used, the default extension is .ipy.
In [1]: def foo():
...: print("hello world")
...:
In [2]: %save my_code 1
The following commands were written to file `my_code.py`:
def foo():
print("hello world")
In [3]: cat my_code.py
# coding: utf-8
def foo():
print("hello world")