Python内置了很多函数供调用,eg

求绝对值函数abs()

  1. >>>abs(-1)
  2. 1
  3. >>>abs(1)

求和函数sum(),sum(iterable,start),第一个参数必须是可以迭代对象,listtuple。

  1. >>>sum([1,2,3],4)
  2. 10
  3. >>>sum((1,2,3),4)
  4. 10

类型转换函数,int(),float(),str(),bool()

  1. >>>int(12.34)
  2. 12
  3. >>>float('12.34')
  4. 12.34
  5. >>>str(123)
  6. ''
  7. >>>bool(1)
  8. Ture
  9. >>>bool('')
  10. False

这些内置函数都可以指向我们定义的变量,使用时直接调用变量名即可。

定义函数:要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

  1. def s_su(i):
  2. if x == 5:
  3. return x*x
       elif x == 6:
         return x+x
  4.  return
  5.  
  6. >>>s_su(5)
  7. >>>s_su(6)
    >>>s_su(7)
    5
    error
    None#返回为空不显示

函数的参数

在定义s_su(i)这个函数的时候,传入了一个形参i,并不是真正的变量,在调用才传入了实参5,6,7这些;

函数并不指定为一个参数,可以有很多,但是在一个函数中最好不要定义太多  这样容易弄混淆。

比如要计算1*2*3*4*5的值,一个参数是可以实现的

程序1:像这样:

  1. def calc(x):
  2. s = 1
  3. while x > 0:
  4. s = s * x
  5. x = x - 1
  6. return s
    >>>calc(5)
    120

但是两个参数会让程序更加简单,比如计算一个数的平方 可以return x*x,但是很多之后写出来表达式很麻烦

  1. def calcxy
  2. s = 1
  3. while y > 0:
  4. y = y-1
  5. s = s * x
  6. return s
  7. >>>calc(2,2)
  8. 4
  9. >>>calc(3,3)
  10. 27

还可以把参数设为默认值,计算固定的数字平方值

  1. def calcxy=2
  2. s = 1
  3. while y > 0:
  4. y = y-1
  5. s = s * x
  6. return s
    >>>calc(5)
    25

一个函数可以调用其他函数,同时也可以调用自身,调用自身成为递归函数

像程序1也可以实现递归

但是调用自身就变得更简洁了

一开始代码是这样写的,

  1. def calc(x):
  2. return x * calc(x-1)

觉得没什么问题,运行时一直报错RecursionError: maximum recursion depth exceeded

--->>>调用超过最大深度,Python默认最大深度是995次

然后才明白不加上限定条件的话 x的值会取负数导致超过最大递归深度

修改一下

  1. def calc(x):
  2. if x == 1:
  3. return 1
  4. return x * calc(x-1)

限定了递归到x=1结束调用,在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。

尾递归:

Python函数基础-函数调用,定义,参数,递归的更多相关文章

  1. 11、Python函数基础(定义函数、函数参数、匿名函数)

    函数先定义函数,后调用 一.定义函数: 1.简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 (). 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数. 函 ...

  2. Python函数中如何定义参数

    一.位置参数:根据函数定义时的参数位置传递参数#形参和实参的个数必须一致def fun1(): print("运行结果") print("this is fun1(),n ...

  3. 《转》Python学习(17)-python函数基础部分

    http://www.cnblogs.com/BeginMan/p/3171977.html 一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/arch ...

  4. Python函数的基本定义和调用以及内置函数

    首先我们要了解Python函数的基本定义: 函数是什么? 函数是可以实现一些特定功能的小方法或是小程序.在Python中有很多内建函数,当然随着学习的深入,你也可以学会创建对自己有用的函数.简单的理解 ...

  5. 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 #与函 ...

  6. Python函数基础和函数参数

    函数的定义和函数的调用 return的作用 三种参数的定义 常用的内置函数 len() 函数基础 函数的定义 def 函数名(参数): pass return 表达式 pass在这里表示什么都没有,不 ...

  7. python函数基础-参数-返回值-注释-01

    什么是函数 函数就是有特定功能的工具 # python中有内置函数(python解释器预先封装好的)与自定义函数(用户自定义封装的)之分 为什么要用函数 # 可以减少代码冗余,增加代码复用性 # 使代 ...

  8. python函数基础(函数的定义和调用)

    函数的定义 python定义函数使用def关键字 return[表达式]语句用于退出函数,选择性的向调用方返回一个表达式,不带参数值的return语句返回none def 函数名(参数列表): 函数体 ...

  9. python函数基础以及函数参数简解

    python中函数分为函数.内置函数Python所有的内置函数 自定义函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. ...

随机推荐

  1. 【Python】【有趣的模块】【requests】【二】快速上手

    [一]参数及结果 [二]响应内容 >>> r = requests.get('https://github.com/timeline.json') >>> prin ...

  2. Git 基础 - 打标签

    列出现有标签(或者使用git tag -l) $ git tag v0. v1. 如果只对 1.4.2 系列的版本感兴趣 $ git tag -l 'v1.4.2.*' v1. v1. v1. v1. ...

  3. sklearn preprocessing (预处理)

    预处理的几种方法:标准化.数据最大最小缩放处理.正则化.特征二值化和数据缺失值处理. 知识回顾: p-范数:先算绝对值的p次方,再求和,再开p次方. 数据标准化:尽量将数据转化为均值为0,方差为1的数 ...

  4. VS2010:“error C2712: 无法在要求对象展开的函数中使用 __try”

    ZC:这个错误是在使用 "__try{...} __except(EXCEPTION_EXECUTE_HANDLER){}"时 遇到的 http://blog.csdn.net/c ...

  5. STL——map

    看到map这里,都不知道它主要是干嘛的,你有没有这样的疑问. map的主要作用:提供对T类型的数据进行快速和高效的检索 .C++ STL中标准关联容器set, multiset, map, multi ...

  6. Node.js 常用命令

    1. 查看node版本 node --version 2. 查看npm 版本,检查npm 是否正确安装. npm -v 3. 安装cnpm (国内淘宝镜像源),主要用于某些包或命令程序下载不下来的情况 ...

  7. 学习笔记41—ttest误区

    1.grapPad软件里面双T结果和matlab,EXCEl里面双T结果一致时,设置如下:

  8. django数据库的增、删、改、查

    1.增加 第一种:save 通过创建模型类对象,执行对象的save()方法保存到数据库中. 第二种:create 2.修改 3.查询 get 查询单一结果,如果不存在会抛出模型类.DoesNotExi ...

  9. 牛客国庆集训派对Day3 B Tree

    Tree 思路: 树形dp 注意0不存在逆元,任何一个数乘以0就变成0了,就没有价值浪,所以要暴力转移 代码: #pragma GCC optimize(2) #pragma GCC optimize ...

  10. java 数据导入xls

    @RequestMapping("admin/doorDesign/getexcel.do") public void getExcel(String name,String ph ...