python中的函数以及递归
一 函数
函数的组成:
def funname(parameters):
instructions。。。。
在探讨函数的定义之前,让我们想想,如果我们写了上千行代码,其实各种变量定义,循环..... 我们如何知道代码执行到哪里了?或者说什么时候会结束?
因为我们应该谈谈函数的第一个特性了--分解
分解:指的是模块化--》将代码的功能拆分成能独立运作的模块,使得代码清晰,也能重用
那么应该如何分解呢?那就要说说第二个特性:抽象
抽象:找到运算的相同模式。
让我们先看下下面的代码熟悉下
x = 4
def one(x):
x +1
print x
z = one(10)
print x
这里的x 的两次输出分别是多少?
很显然这里涉及到的问题是全局变量和局部变量?
我们把这一个代码文件想象成一房子,然而函数就是房子里面的冰箱,冰箱里面的空间是一个局部空间,那么冰箱里面的苹果跟房间里桌子上面的苹果不是一个苹果(我知道这个比喻不恰当)
那么结果都是 4 4
而函数的核心就是 [实现和功能的分离--你知道这意味着什么]
二 递归:
很难给递归下一个完整的定义,但是我还是要说说我的理解(上次看到有人说,递归就是函数调用函数本身,觉得是一个很纠结的说法。但是仔细想想,又不知道哪里出了问题LOL)
递归---->将一个问题,分解成同类更小的问题(可能是问题的容量,也可能是问题的深度),从而解决问题
举个例子:如何判断一个数字是不是回文数?
回文数: 1 121 1221 12321 2332 大概是这样
这里比如x = ‘12323432121’ 判断方法:我们先比较第一个跟最后一个数的大小如果相同 我们把这两个数去掉 然后再来一次
def two(x):
if len(x) > 1:
i = x[:1]
l = x[-1:]
if i == l:
x = x[1:]
x = x[:-1]
if len(x) == 0:
return True
else:
two(x)
else:
return False
return True
see 是不是很简单
python中的函数以及递归的更多相关文章
- Python中利用函数装饰器实现备忘功能
Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下 " ...
- 第七篇 python基础之函数,递归,内置函数
一 数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因 ...
- Python 中的函数
学了 Python 中的数据类型,语句,接下来就来说一下 Python 中的函数,函数是结构化编程的核心.我们使用函数可以增加程序的可读性.自定义函数时使用关键字def 函数由多条语句组成.在定义函数 ...
- [19/10/13-星期日] Python中的函数
一.函数 # 第五章 函数 ## 函数简介(function) - 函数也是一个对象 - 对象是内存中专门用来存储数据的一块区域 - 函数可以用来保存一些可执行的代码,并且可以在需要时,对这些语句进行 ...
- python基础之函数,递归,内置函数
一.数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因 ...
- Python中split()函数的用法及实际使用示例
Python中split()函数,通常用于将字符串切片并转换为列表. 一.函数说明: split():语法:str.split(str="",num=string.count(st ...
- python中range()函数的用法
python中range()函数可创建一个整数列表,一般用在for循环中. range()函数语法: range(start,stop[,step]) 参数说明: star: 计数从star开始.默认 ...
- python中format函数
python中format函数用于字符串的格式化 通过关键字 1 print('{名字}今天{动作}'.format(名字='陈某某',动作='拍视频'))#通过关键字 2 grade = {'nam ...
- Python中readline()函数 去除换行符
从Python中readline()函数读取的一行内容中含有换行符\n,很多时候我们需要处理不含有换行符的字符串,此时就要去掉换行符\n. 方法是使用strip()函数. 例子如下: f = open ...
随机推荐
- 文件上传&文件下载
一.单个文件上传 文件上传需要两个jar包: 首先制作一个简单的页面,用于实现文件上传 <h1>单个文件上传</h1> <s:form action="uplo ...
- Java正则获取邮箱
实现思路 1.使用Java.net.URL对象,绑定网络上某一个网页的地址 2.通过java.net.URL对象的openConnection()方法获得一个HttpConnection对象 3.通过 ...
- [No000021]跟维多利亚学英语
- Vs 2015 调试ASP.NET Core修改监听端口
如何改变监听IP地址和端口?在这里找到了答案:https://github.com/aspnet/KestrelHttpSer... 把Program.cs加一行UseUrls代码如下: using ...
- Python的高级特性12:类的继承
在面向对象的程序设计中,继承(Inheritance)允许子类从父类那里获得属性和方法,同时子类可以添加或者重载其父类中的任何方法.在C++和Java的对象模型中,子类的构造函数会自动调用父类的构造函 ...
- page-cache层
pagecache层内存管理 如果使用page,尤其对于32位系统来说,kmap & kunmap,可以把做struct *page与虚拟地址的映射 用kmap做一个临时的映射,然后通过kun ...
- js profiler
https://developers.google.com/web/fundamentals/performance/critical-rendering-path/?hl=en https://de ...
- 解决Ehcache缓存警告问题
警告: Creating a new instance of CacheManager using the diskStorePath "D:\Apache Tomcat 6.0.18\te ...
- 20145230GDB调试汇编堆栈过程分析
20145230GDB调试汇编堆栈过程分析 分析过程 出现的问题:一开始无法编译,是因为我们的Linux中没有安装一个库. 进入之前先设置断点,之后disassemble可以获取汇编代码,用i r指令 ...
- beaglebone_black_学习笔记——(9)UART使用
笔者通过查阅相关资料,了解了BeagleBoneBlack开发板的UART接口特性,掌握的UART接口的基本使用方法,最后通过一个C语言的例程实现串口的自发自收.有了这个串口开发板就可和其他设备进行串 ...