diff --git a/src/if_py_both.h b/src/if_py_both.h
index cdd7460..1a4ef46 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -2922,8 +2922,7 @@
 {
     FunctionObject	*self;
 
-    self = (FunctionObject *) subtype->tp_alloc(subtype, 0);
-
+    self = (FunctionObject *)subtype->tp_alloc(subtype, 0);
     if (self == NULL)
 	return NULL;
 
@@ -2938,15 +2937,36 @@
 	self->name = vim_strsave(name);
     }
     else
-	if ((self->name = get_expanded_name(name,
-				    vim_strchr(name, AUTOLOAD_CHAR) == NULL))
-		== NULL)
+    {
+	char_u *p;
+
+	if ((p = get_expanded_name(name,
+			    vim_strchr(name, AUTOLOAD_CHAR) == NULL)) == NULL)
 	{
 	    PyErr_FORMAT(PyExc_ValueError,
 		    N_("function %s does not exist"), name);
 	    return NULL;
 	}
 
+	if (p[0] == K_SPECIAL && p[1] == KS_EXTRA && p[2] == (int)KE_SNR)
+	{
+	    char_u *np;
+	    size_t len = STRLEN(p) + 1;
+
+	    if ((np = alloc(len + 2)) == NULL)
+	    {
+		vim_free(p);
+		return NULL;
+	    }
+	    mch_memmove(np, "<SNR>", 5);
+	    mch_memmove(np + 5, p + 3, len - 3);
+	    vim_free(p);
+	    self->name = np;
+	}
+	else
+	    self->name = p;
+    }
+
     func_ref(self->name);
     self->argc = argc;
     self->argv = argv;
diff --git a/src/testdir/test_python2.vim b/src/testdir/test_python2.vim
index c438ba0..d79400d 100644
--- a/src/testdir/test_python2.vim
+++ b/src/testdir/test_python2.vim
@@ -36,3 +36,30 @@
   normal j
   call assert_equal([2, 6], [line('.'), col('.')])
 endfunc
+
+func Test_vim_function()
+  " Check creating vim.Function object
+  py import vim
+
+  func s:foo()
+    return matchstr(expand('<sfile>'), '<SNR>\zs\d\+_foo$')
+  endfunc
+  let name = '<SNR>' . s:foo()
+
+  try
+    py f = vim.bindeval('function("s:foo")')
+    call assert_equal(name, pyeval('f.name'))
+  catch
+    call assert_false(v:exception)
+  endtry
+
+  try
+    py f = vim.Function('\x80\xfdR' + vim.eval('s:foo()'))
+    call assert_equal(name, pyeval('f.name'))
+  catch
+    call assert_false(v:exception)
+  endtry
+
+  py del f
+  delfunc s:foo
+endfunc
diff --git a/src/testdir/test_python3.vim b/src/testdir/test_python3.vim
index 69ad802..344034a 100644
--- a/src/testdir/test_python3.vim
+++ b/src/testdir/test_python3.vim
@@ -36,3 +36,30 @@
   normal j
   call assert_equal([2, 6], [line('.'), col('.')])
 endfunc
+
+func Test_vim_function()
+  " Check creating vim.Function object
+  py3 import vim
+
+  func s:foo()
+    return matchstr(expand('<sfile>'), '<SNR>\zs\d\+_foo$')
+  endfunc
+  let name = '<SNR>' . s:foo()
+
+  try
+    py3 f = vim.bindeval('function("s:foo")')
+    call assert_equal(name, py3eval('f.name'))
+  catch
+    call assert_false(v:exception)
+  endtry
+
+  try
+    py3 f = vim.Function(b'\x80\xfdR' + vim.eval('s:foo()').encode())
+    call assert_equal(name, py3eval('f.name'))
+  catch
+    call assert_false(v:exception)
+  endtry
+
+  py3 del f
+  delfunc s:foo
+endfunc
diff --git a/src/version.c b/src/version.c
index 4d39dde..101d786 100644
--- a/src/version.c
+++ b/src/version.c
@@ -800,6 +800,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    627,
+/**/
     626,
 /**/
     625,
