python函数

为什么需要函数?

如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数.

数学中的函数

函数这个数学名词是莱布尼兹在1694年开始使用的,以描述曲线的一个相关量,如曲线的斜率或者曲线上的某一点。莱布尼兹所指的函数现在被称作可导函数,数学家之外的普通人一般接触到的函数即属此类。对于可导函数可以讨论它的极限和导数。此两者描述了函数输出值的变化同输入值变化的关系,是微积分学的基础。

中文的“函数”一词由清朝数学家李善兰译出。其《代数学》书中解释:“凡此變數中函(包含)彼變數者,則此為彼之函數”。

y = 2x+1 x=1, y=3 ; x=2, y=5

函数的定义与调用

在这里插入图片描述

空函数

定义一个什么事也不做的空函数,可以用 pass 语句;
pass 可以用来作为占位符,还没想好怎么写函数的代码,就可以先放一个 pass ,让代码能运行起来

在这里插入图片描述

函数返回值

在这里插入图片描述

所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果.
没有返回值,默认返回None

定义函数的格式

def 函数名(参数1,参数2,...,参数n):

	函数体(语句块)

函数名的命名规则要符合python中的命名要求。一般用小写字母和单下划线、数字等组合
匈牙利命名法(sUserName), 驼峰式大小写(userName), 帕斯卡命名法(UserName)
def是定义函数的关键词,这个简写来自英文单词define
函数名后面是圆括号,括号里面,可以有参数列表,也可以没有参数
千万不要忘记了括号后面的冒号
函数体(语句块),相对于def缩进,按照python习惯,缩进四个空格

函数的优势

从理论上说,不用函数,也能够编程,我们在前面已经写了程序,就没有写函数,当然,用python的内建函数姑且不算了。现在之所以使用函数,主要是:

  1. 降低编程的难度(分而治之的思想)
  2. 代码重用。避免了重复劳动,提供了工作效率。

局部变量

 局部变量,就是在函数内部定义的变量
 不同的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响
 局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储,这就是它的作用

在这里插入图片描述

全局变量

如果一个变量,既能在一个函数中使用,也能在其他的函数中使用,这样的变量就是全局变量。
  在函数外边定义的变量叫做全局变量
  全局变量能够在所有的函数中进行访问
  如果在函数中修改全局变量,那么就需要使用global进行声明,否则出错
  如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量的
小技巧: 强龙不压地头蛇(就近原则)

在这里插入图片描述

global

global的本质是声明可以修改全局变量的指向, 即变量可以指向新的数据。
1). 不可变类型的全局变量: 指向的数据不能修改, 不使用global时无法修改全局变量。
2). 可变类型的全局变量: 指向的数据可以修改, 不使用global时可以修改全局变量。

形参与实参

定义时小括号中的参数,用来接收参数用的,称为 “形参”
调用时小括号中的参数,用来传递给函数用的,称为 “实参”

在这里插入图片描述

参数

默认参数

默认参数可以降低调用函数的难度。
默认参数注意事项:
有多个参数时,变化大放前面,变化小的放后面;
必选参数在前,默认参数在后

可变参数

可变参数就是传入的参数个数是可变的,可以是 1 个、2 个到任意个,还可以是 0 个。*args
以数学题为例子,给定一组数字 a,b,c…,
请计算 a 2 + b 2 + c 2 + …

关键字参数

关键字参数允许传入 0 个或任意个含参数名的参数;
这些关键字参数在函数内部自动组装为一个 dict;
关键字参数用**kwargs;

参数组合

参数组合是指可以必选参数、 默认参数、 可变参数和关键字参数一起使用。
参数定义的顺序必须是:必选参数、 默认参数、可变参数和关键字参数。

参数总结

在这里插入图片描述

匿名函数

匿名函数指一类无须定义标识符的函数或子程序。Python用lambda语法定义匿名函数,只需用表达式而无需申明。	(省略了用def声明函数的标准步骤)

在这里插入图片描述

在这里插入图片描述

lambda函数能接收任何数量的参数但只能返回一个表达式的值

在这里插入图片描述

匿名函数应用

作为函数参数传递

在这里插入图片描述

作为内置函数参数

在这里插入图片描述

递归函数

已知: 函数可以调用函数。结论: 一个函数在内部调用自己本身,这个函数就是递归函数。
需求: 
	计算阶乘 factorial:  n! = 1 * 2 * 3 * ... * n

在这里插入图片描述

递归函数原理

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值