学习python 七 (函数)

10.函数

函数是什么?
函数是功能 过程 动作
函数是实现某一功能或者某些功能的命令的集合

10.1 函数的定义

def (define function) 
def 函数的名称([参数]):
  	 #缩进 函数体
	 [return 返回值]
abs()
pass

参数的检查:
1.调用函数的时候,参数的个数不对,TypeError
在这里插入图片描述
2.如果参数的类型不对
在这里插入图片描述
3. 返回多个值?
可以
坐标 位移 角度
import math
在这里插入图片描述
python 函数返回多个值的时候实则返回的是一个元组
总结:
1.定义函数的时候,需要确定函数的名称和参数个数
2.如果有必要的话,需要先对参数的类型做检查
3.函数的内部可以用return返回函数的结果
4.函数可以返回多个值,但是返回的结果实则是元组tuple

10.2 函数的调用

调用函数的时候,函数名称([参数])
abs(-99)
函数名称实则是指向函数对象的引用,可以把函数名称赋值给一个变量。

10.3 函数的分类

以有没有参数:
有参函数
无参函数
以有没有返回值
有返回值函数
无返回值函数
定义者分类
系统
第三方

10.4 全局变量和局部变量

全局变量
在python,定义py文件里面的变量就是全局变量
在这里插入图片描述
特点:
代码运行的时候,变量是始终有效的

局部变量:
定义在函数的内部的变量称为局部变量
在这里插入图片描述
局部变量的作用域只在函数内有效
函数的内部是可以访问全局变量,但是不能改变(操作)全局变量
如果要操作全局变量?--------- global (全局)
在这里插入图片描述
值传递:
在这里插入图片描述
引用传递(对象):
在这里插入图片描述
在这里插入图片描述

10.5 函数的参数

10.5.1 位置参数
x的平方:
def show(x):
return x*x
show(x) x 就是位置参数

10.5.2 默认值参数
定义函数的时候,可以给参数加上默认值,调用函数的时候,如果没有给这个参数赋值,也是可以
成功调用函数
在这里插入图片描述
注意:
1.默认值参数应该写在必选参数的后面
2. 默认值参数可以有多个,变化范围小的参数要写在变化范围大的参数前
在这里插入图片描述
注意:
默认值参数要指向一个不可变的对象 None ------- 对象
在这里插入图片描述
思考:
python 不可变对象有哪些?
尽管对象本身不可变,但变量的对象引用是可变的
有int、字符串(string)、float、(数值型number)、元组(tuple)
在这里插入图片描述

10.5.3 可变参数
*变量表示的是可变参数
在这里插入图片描述
已经有一个列表或者元组
在这里插入图片描述
*nums表示的是nums这个list的所有元素作为可变参数传递给了num

10.5.4 关键字参数
将参数组装dict
用户登录注册
函数 用户名 密码 **参数名
电话号 地址
可扩展性
在这里插入图片描述
在这里插入图片描述
10.5.5 命名关键字参数
在这里插入图片描述
10.5.6 参数的组合
****
在这里插入图片描述

10.6 函数的递归

在函数的内部,可以调用其他函数,函数内部调用自己,就是递归
前提条件:
1.函数自己调用自己
2.有终止条件

练习:
(利用递归)
n!
fact(n) = n!
在这里插入图片描述
递归会有栈溢出现象,那么这种现象怎么解决?
通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,可以把循环看成是一种特殊的尾递归函数。
尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。
这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。
在这里插入图片描述

10.7 匿名函数

匿名函数:没有的名字的函数就是匿名函数
function 函数名(参数){
函数体
return 返回值
}

function (参数){
函数体
return 返回值
}

def 函数名(参数):
#缩进 函数体

lambda ---------- 箭头函数(javaScript)
lambda: 代码

1. 匿名函数和普通函数的对比
#求三个数和
def sum(a,b,c):
return a+b+c
sum_lambda = lambda a,b,c : a+b+c
print(sum(2,3,4))
print(sum_lambda(2,3,4))
2.匿名函数的参数
无参数:
lambda_a = lambda:100
print(lambda_a())
在这里插入图片描述

一个参数
在这里插入图片描述
在这里插入图片描述
多个参数
在这里插入图片描述
在这里插入图片描述
表达式分支

lambda_b = lambda x : x if x % 2 == 0 else x+2 print(lambda_b(6))
print(lambda_b(7))

3.作为一个参数传递
def func(a,b,func):
print(“a=”,a)
print(“b=”,b)
print(“a-b=”,func(a,b))
func(100,1,lambda a,b:a-b)

4. 作为函数的返回值
def func(a,b):
return lambda c : a+b+c
return_func = func(1,1000) #匿名函数 lambda c :a+b+c
print(func)
print(return_func)
print(return_func(100)) #调用return_funct()

10.8 偏函数

在python中,我们需要调用函数的时候,需要把函数中的参数设定为一个固定的一个值的时候,我们用到偏函数
引用模块------functools
import functools
partial funcition (偏函数)
from functools import partial ---------------直接引入partial
partial (函数的名称,参数=固定值)
int() ----------- 将其他类型转换成int
在这里插入图片描述

10.9 全局函数

https://docs.python.org/3/library/functions.html#abs
round(5.5) 6
round(4.5) 4
奇数往前进一位,偶数的舍掉(这里的奇偶数指个位数)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值