我无法获得 python 到 return 函数的值
I can't get python to return the values of the function
我无法获得 python 到 return 函数的值 我尝试将函数变量合并为一个,我用 python print 分别测试这些值,它们工作但在测试中它只有 returns 值 none.
这是代码。
import codecs
import os
import re
a = str(r"'c:\videos\my video.mp4'")
b = a.replace('\','/')
real_direct=b.replace(' ','')
max_caract = int(len(real_direct)-1)
def dividir(i) :
if real_direct[i]=='/' :
print(real_direct[i])
direct = real_direct[2 : i+1]
file = real_direct[i+1 : max_caract]
#print(direct)
#print(file)
return (direct, file)
else:
dividir(i-1)
print(dividir(max_caract))
至少,您需要 else
分支中的 return
到 return 来自递归调用的值。否则它会被丢弃并且函数隐式 returns None
.
您的代码的 else 部分既没有 return
也没有打印语句。您可以像在 if
部分中实现 return 一样执行此操作,或者如果您只是希望在屏幕上看到输出,也可以像之前那样添加打印语句
这里的问题是您正在递归地调用一个函数,而它的 inner-most 函数调用是唯一 return 的东西。其他一切,包括正在打印的 dividir()
,return 什么都没有。 return dividir(i-1)
在 else 中解决它。
#!/usr/bin/env python3
import codecs
import os
import re
from pathlib import Path
a = str(r"'c:\videos\my video.mp4'")
b = a.replace("\", "/")
real_direct = b.replace(" ", "")
max_caract = int(len(real_direct) - 1)
def dividir(i):
print('starting dividir function')
if real_direct[i] == "/":
print(f'{real_direct[i]=}')
direct = real_direct[2 : i + 1]
file = real_direct[i + 1 : max_caract]
print(f'{direct=}')
print(f'{file=}')
return (direct, file)
else:
print('doing else')
return dividir(i - 1)
print(dividir(max_caract))
$ ./codecs.py
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
real_direct[i]='/'
direct=':/videos/'
file='myvideo.mp4'
(':/videos/', 'myvideo.mp4')
我无法获得 python 到 return 函数的值 我尝试将函数变量合并为一个,我用 python print 分别测试这些值,它们工作但在测试中它只有 returns 值 none.
这是代码。
import codecs
import os
import re
a = str(r"'c:\videos\my video.mp4'")
b = a.replace('\','/')
real_direct=b.replace(' ','')
max_caract = int(len(real_direct)-1)
def dividir(i) :
if real_direct[i]=='/' :
print(real_direct[i])
direct = real_direct[2 : i+1]
file = real_direct[i+1 : max_caract]
#print(direct)
#print(file)
return (direct, file)
else:
dividir(i-1)
print(dividir(max_caract))
至少,您需要 else
分支中的 return
到 return 来自递归调用的值。否则它会被丢弃并且函数隐式 returns None
.
您的代码的 else 部分既没有 return
也没有打印语句。您可以像在 if
部分中实现 return 一样执行此操作,或者如果您只是希望在屏幕上看到输出,也可以像之前那样添加打印语句
这里的问题是您正在递归地调用一个函数,而它的 inner-most 函数调用是唯一 return 的东西。其他一切,包括正在打印的 dividir()
,return 什么都没有。 return dividir(i-1)
在 else 中解决它。
#!/usr/bin/env python3
import codecs
import os
import re
from pathlib import Path
a = str(r"'c:\videos\my video.mp4'")
b = a.replace("\", "/")
real_direct = b.replace(" ", "")
max_caract = int(len(real_direct) - 1)
def dividir(i):
print('starting dividir function')
if real_direct[i] == "/":
print(f'{real_direct[i]=}')
direct = real_direct[2 : i + 1]
file = real_direct[i + 1 : max_caract]
print(f'{direct=}')
print(f'{file=}')
return (direct, file)
else:
print('doing else')
return dividir(i - 1)
print(dividir(max_caract))
$ ./codecs.py
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
doing else
starting dividir function
real_direct[i]='/'
direct=':/videos/'
file='myvideo.mp4'
(':/videos/', 'myvideo.mp4')