Python函数基础-函数调用,定义,参数,递归
Python内置了很多函数供调用,eg
求绝对值函数abs()
>>>abs(-1)
1
>>>abs(1)
求和函数sum(),sum(iterable,start),第一个参数必须是可以迭代对象,listtuple。
>>>sum([1,2,3],4)
10
>>>sum((1,2,3),4)
10
类型转换函数,int(),float(),str(),bool()
>>>int(12.34)
12
>>>float('12.34')
12.34
>>>str(123)
''
>>>bool(1)
Ture
>>>bool('')
False
这些内置函数都可以指向我们定义的变量,使用时直接调用变量名即可。
定义函数:要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
def s_su(i):
if x == 5:
return x*x
elif x == 6:
return x+x
return >>>s_su(5)
>>>s_su(6)
>>>s_su(7)
5
error
None#返回为空不显示
函数的参数
在定义s_su(i)这个函数的时候,传入了一个形参i,并不是真正的变量,在调用才传入了实参5,6,7这些;
函数并不指定为一个参数,可以有很多,但是在一个函数中最好不要定义太多 这样容易弄混淆。
比如要计算1*2*3*4*5的值,一个参数是可以实现的
程序1:像这样:
def calc(x):
s = 1
while x > 0:
s = s * x
x = x - 1
return s
>>>calc(5)
120
但是两个参数会让程序更加简单,比如计算一个数的平方 可以return x*x,但是很多之后写出来表达式很麻烦
def calc(x,y)
s = 1
while y > 0:
y = y-1
s = s * x
return s
>>>calc(2,2)
4
>>>calc(3,3)
27
还可以把参数设为默认值,计算固定的数字平方值
def calc(x,y=2)
s = 1
while y > 0:
y = y-1
s = s * x
return s
>>>calc(5)
25
一个函数可以调用其他函数,同时也可以调用自身,调用自身成为递归函数
像程序1也可以实现递归
但是调用自身就变得更简洁了
一开始代码是这样写的,
def calc(x):
return x * calc(x-1)
觉得没什么问题,运行时一直报错RecursionError: maximum recursion depth exceeded
--->>>调用超过最大深度,Python默认最大深度是995次
然后才明白不加上限定条件的话 x的值会取负数导致超过最大递归深度
修改一下
def calc(x):
if x == 1:
return 1
return x * calc(x-1)
限定了递归到x=1结束调用,在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。
尾递归:
Python函数基础-函数调用,定义,参数,递归的更多相关文章
- 11、Python函数基础(定义函数、函数参数、匿名函数)
函数先定义函数,后调用 一.定义函数: 1.简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 (). 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数. 函 ...
- Python函数中如何定义参数
一.位置参数:根据函数定义时的参数位置传递参数#形参和实参的个数必须一致def fun1(): print("运行结果") print("this is fun1(),n ...
- 《转》Python学习(17)-python函数基础部分
http://www.cnblogs.com/BeginMan/p/3171977.html 一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/arch ...
- Python函数的基本定义和调用以及内置函数
首先我们要了解Python函数的基本定义: 函数是什么? 函数是可以实现一些特定功能的小方法或是小程序.在Python中有很多内建函数,当然随着学习的深入,你也可以学会创建对自己有用的函数.简单的理解 ...
- python开发基础04-函数、递归、匿名函数、高阶函数、装饰器
匿名函数 lamba lambda x,y,z=1:x+y+z 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函 ...
- Python函数基础和函数参数
函数的定义和函数的调用 return的作用 三种参数的定义 常用的内置函数 len() 函数基础 函数的定义 def 函数名(参数): pass return 表达式 pass在这里表示什么都没有,不 ...
- python函数基础-参数-返回值-注释-01
什么是函数 函数就是有特定功能的工具 # python中有内置函数(python解释器预先封装好的)与自定义函数(用户自定义封装的)之分 为什么要用函数 # 可以减少代码冗余,增加代码复用性 # 使代 ...
- python函数基础(函数的定义和调用)
函数的定义 python定义函数使用def关键字 return[表达式]语句用于退出函数,选择性的向调用方返回一个表达式,不带参数值的return语句返回none def 函数名(参数列表): 函数体 ...
- python函数基础以及函数参数简解
python中函数分为函数.内置函数Python所有的内置函数 自定义函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. ...
随机推荐
- jquery 获取元素(父节点,子节点,兄弟节点),元素筛选
一, js 获取元素(父节点,子节点,兄弟节点) var test = document.getElementById("test"); var parent = test.p ...
- Http_code码
_codes = { : (: (: (: (: (: (: (: (: (: (: (: (: (: (: (: (: (: (: (: (: (: (: (: (: (: (: (: (: (: ...
- 【BZOJ】4013: [HNOI2015]实验比较
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4013 中第i 条涉及的图片对为(KXi, Xi),判断要么是KXi < Xi ,要么 ...
- JS绘制拓扑图示例 (JTopo)
目前在做的项目是渔政的监控,需要用到的设备包括雷达,光电,站点信息等,想要更直观的展现设备之间的连接关系和状态信息,这时候需要画一张拓扑图 在做拓扑图之前,首先要学习一下,html里面另一个比较常用的 ...
- 什么是 MIME TYPE?
文章来源: http://baike.baidu.com/item/MIME https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_H ...
- python连接MongoDB(无密码无认证)
无密码无认证下连接 from pymongo import MongoClient host = '127.0.0.1' # 你的ip地址 client = MongoClient(host, ) # ...
- java static方法不能被重写@Override
重写方法的目的是为了多态,或者说:重写是实现多态的前提,即重写是发生在继承中且是针对非static方法的. 语法上子类允许出现和父类只有方法体不一样其他都一模一样的static方法,但是在父类引用指向 ...
- jdbcTemplate 后台接口中的分页
Springboot+jdbcTemplate 对查询结果列表做分页, 之前开发的小项目,数据逐渐增多,每次返回所有的查询结果,耗费性能和时间 想到做分页. 于是从简单的分页做起. jdbcTemp ...
- mybatis 学习总结笔记Day2
在门外听到或看到一门技术,找资料入门,一看,嗯,不错,进门之后,发现,尼玛————,是片海,你是关门而出,还是学习精卫填海. 填海吧,也许只是个小水坑,稍加用点力,就填的7788了. 上一篇随笔中说了 ...
- VC_窗口exe_printf信息
1. #include <io.h> #include <fcntl.h> #include <stdio.h> 2. void InitConsoleWindow ...