python递归调用中的坑:打印有值, 返回却None


Posted in Python onMarch 16, 2020

今天给大家分享小编遇到的一个坑有关python递归调用中的坑:打印有值, 返回却None问题。

问题:

前几天写一个小面试题, 忽然有个惊悚的发现, 如下:

s1 = 'abcdefg'

def right_shift(s, n):
 """
 把传入的字符串,前n个字符移动到最后面
 """
 if n < 1:
  print(s) # 此步输出结果为 "efgabcd"
  return s
 s = s[1:] + s[0]
 n -= 1
 right_shift(s, n)

s = right_shift(s1, 4)
print(s)# 此步输出结果为 None

输出结果让我百思不得其解, 为什么明明上一步输出有值, return出去后就变成了None??

解决方法: return function()

今日在写一个装饰器的时候偶然想起一个可能, 把函数内最下面一行right_shift(s, n) 改为return right_shift(s, n)即可! 修改后代码如下:

s1 = 'abcdefg'
def right_shift(s, n):
 """
 把传入的字符串,前n个字符移动到最后面
 """
 if n < 1:
  # print(s)
  return s
 s = s[1:] + s[0]
 n -= 1
 # 加入return, 其原理根装饰器的闭包接近!
 return right_shift(s, n)
s = right_shift(s1, 4)
print(s) # 成功输出 "efgabcd"

知识点补充:python 递归返回None 解决

今天写了一个递归 return 之前答应出来都是有值的, 调用时候返回值都是None ,很是纳闷 后来找到原因
现在来看下返回None 的代码

def get_end_parent_ele(self, obj):
    """获取这个id 所在的原始类"""
    parent_id = obj.parent_id if obj else 0
    OHHOLog.print_log("获取这个id parent_id")
    OHHOLog.print_log(parent_id)
    parent_obj = self.obj_obj.get_by_id(parent_id)
    if parent_obj.key == "all":
      OHHOLog.print_log("all")
      return_key = obj.key
      OHHOLog.print_log(return_key)
      return return_key
    else:
      self.get_end_parent_ele(parent_obj)

修改将下面的也给返回

def get_end_parent_ele(self, obj):
    """获取这个id 所在的原始类"""
    parent_id = obj.parent_id if obj else 0
    OHHOLog.print_log("获取这个id parent_id")
    OHHOLog.print_log(parent_id)
    parent_obj = self.interest.get_by_id(parent_id)
    if parent_obj.key == "all":
      OHHOLog.print_log("all")
      return_key = obj.key
      OHHOLog.print_log(return_key)
      return return_key
    else:
      return self.get_end_parent_ele(parent_obj)

没有return的时候数据只能进不能出所以就只能返回None

总结

到此这篇关于python递归调用中的坑:打印有值, 返回却None的文章就介绍到这了,更多相关python递归打印有值返回none内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python解析html开发库pyquery使用方法
Feb 07 Python
通过代码实例展示Python中列表生成式的用法
Mar 31 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
Apr 25 Python
Python语言实现机器学习的K-近邻算法
Jun 11 Python
python中yaml配置文件模块的使用详解
Apr 27 Python
python操作mysql代码总结
Jun 01 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
Dec 28 Python
Python实现性能自动化测试竟然如此简单
Jul 30 Python
用Python画小女孩放风筝的示例
Nov 23 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
Jun 10 Python
使用jupyter notebook运行python和R的步骤
Aug 13 Python
TensorFlow2.0使用keras训练模型的实现
Feb 20 Python
django 前端页面如何实现显示前N条数据
Mar 16 #Python
Python迭代器Iterable判断方法解析
Mar 16 #Python
python 递归调用返回None的问题及解决方法
Mar 16 #Python
python 通过邮件控制实现远程控制电脑操作
Mar 16 #Python
django中的数据库迁移的实现
Mar 16 #Python
django之从html页面表单获取输入的数据实例
Mar 16 #Python
Django实现将views.py中的数据传递到前端html页面,并展示
Mar 16 #Python
You might like
转PHP手册及PHP编程标准
2006/12/17 PHP
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
Thinkphp调用Image类生成缩略图的方法
2015/03/07 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
用javascript实现给图片加链接
2007/08/15 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
JS图片自动轮换效果实现思路附截图
2014/04/30 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
值得收藏的vuejs安装教程
2017/11/21 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
ng-alain表单使用方式详解
2018/07/10 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
Python 常用 PEP8 编码规范详解
2017/01/22 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
django的ORM模型的实现原理
2019/03/04 Python
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
python生成并处理uuid的实现方式
2020/03/03 Python
django admin 添加自定义链接方式
2020/03/11 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
HTML5实现预览本地图片
2016/02/17 HTML / CSS
写自荐信的七个技巧
2013/10/15 职场文书
求职毕业生自荐书
2014/02/08 职场文书
组织鉴定材料
2014/06/02 职场文书
工厂车间标语
2014/06/19 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
运动会闭幕式主持词
2015/07/01 职场文书