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安装mysql-python简明笔记(ubuntu环境)
Jun 25 Python
Python实现模拟分割大文件及多线程处理的方法
Oct 10 Python
教你利用Python玩转histogram直方图的五种方法
Jul 30 Python
python爬虫框架scrapy实现模拟登录操作示例
Aug 02 Python
Python 最大概率法进行汉语切分的方法
Dec 14 Python
pandas数据筛选和csv操作的实现方法
Jul 02 Python
django 中QuerySet特性功能详解
Jul 25 Python
Django admin model 汉化显示文字的实现方法
Aug 12 Python
pytorch 自定义卷积核进行卷积操作方式
Dec 30 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
如何基于python实现年会抽奖工具
Oct 20 Python
pytorch显存一直变大的解决方案
Apr 08 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单例模式应用详解
2013/06/03 PHP
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
phpStorm2020 注册码
2020/09/17 PHP
动态样式类封装JS代码
2009/09/02 Javascript
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
通过JavaScript控制字体大小的代码
2011/10/04 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
JavaScript订单操作小程序完整版
2017/06/23 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
[01:45]DOTA2新英雄“神谕者”全方位展示
2014/11/21 DOTA
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
详解Python流程控制语句
2020/10/28 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
Pure Collection美国官网:来自英国羊绒专家的奢华羊绒
2017/11/19 全球购物
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
商务英语大学生职业生涯规划书范文
2014/01/01 职场文书
八年级历史教学反思
2014/01/10 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
《梅花魂》教学反思
2016/02/18 职场文书
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS