我正在编写一个密码生成器,它接受一个字符串(网站的 URL)并将其处理成一个安全的密码,该密码不能根据网站的名称进行回溯。
在部分代码中,我创建了一个如下所示的递归函数:
def get_number(n = 0, nums = ''):
for i in range(0, len(url)):
#both n and nums are changed
if len(nums) < num_length:
get_number(n, nums)
else:
print(nums)
return(nums)
...
print(get_number())
我希望 nums
输出两次,因为我在 else block 中打印它并稍后打印返回。但是,如果它确实通过递归循环,nums
从 else block 打印,函数返回 None
.如果if len(nums) < num_length
第一次为 false,然后返回正确的值。
为什么会返回None
,如果我确认它返回的对象实际上不是 None
之前的那一行?
我对 Python 有点陌生;它以不同方式处理递归吗?