Python函数进阶(小白五分钟从入门到精通)

函数说明文档

函数是纯代码语言,想要理解其含义,就需要一行行的去阅读理解代码,效率比较低。

我们可以给函数添加说明文档,辅助理解函数的作用。
语法如下:

通过多行注释的形式,对函数进行说明解释
内容应写在函数体之前


在PyCharm中查看函数说明文档

在PyCharm编写代码时,可以通过鼠标悬停,查看调用函数的说明文档

总结:

1. 函数说明文档的作用是?
对函数进行说明解释,帮助更好理解函数的功能
2. 定义语法


:param 用于解释参数
:return 用于解释返回值

函数的嵌套调用

什么是函数的嵌套

所谓函数嵌套调用指的是一个函数里面又调用了另外一个函数

执行效果:

执行过程

如果函数A中,调用了另外一个函数B,那么先把函数B中的任务都执行完毕之后才会回到上次 函数A执行的位置 

def input_int(n):
    while True:
        try:
            i = int(input(n))
            break
        except:
            print('您输入错误,重试...')
    return i
def fact(n):
    j = 1
    for i in range(1,n+1):
        j = int(i)*j
    return j
a = input_int('请输入第1个整数: ')
b = input_int('请输入第2个整数: ')
c = input_int('请输入第3个整数: ')
d = fact(a)+fact(b)+fact(c)
print('预测明年总销售额: ',d)

总结:

1. 什么是嵌套调用
在一个函数中,调用另外一个函数
2. 执行流程
函数A中执行到调用函数B的语句,会将函数B全部执行完成后,继续执行函数A的剩余内容


变量的作用域

局部变量

变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)
主要分为两类:局部变量和全局变量

所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效


变量a是定义在`testA`函数内部的变量,在函数外部访问则立即报错.

局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量


全局变量

所谓全局变量,指的是在函数体内、外都能生效的变量 思考:如果有一个数据,在函数A和函数B中都要使用,该怎么办? 答:将这个数据存储在一个全局变量里面

global关键字 

思考:`testB`函数需要修改变量num的值为200,如何修改程序?

☆ 使用 global关键字 可以在函数内部声明变量为全局变量, 如下所示 

def fun7(b):
    global a
    print('a的值: ', a)
    a = 2
    print('a+b的值: ',a+b)
a = 3
fun7(13)
print('a的值: ',a)

总结:

1. 什么是局部变量
作用范围在函数内部,在函数外部无法使用
2. 什么是全局变量
在函数内部和外部均可使用
3. 如何将函数内定义的变量声明为全局变量
使用global关键字,global 变量
 

递归

递归是一种编程思想,应用场景

  1. 在我们日常开发中,如果要遍历一个文件夹下面所有的文件,通常会使用递归来实现

  1. 在后续的算法课程中,很多算法都离不开递归,例如:快速排序
      1. 递归的特点函数内部自己调用自己必须有出口

1

# 3

+ 2 + 1

2

def

sum_numbers(num):

3

# 1.如果是1,直接返回1 --

4

if num == 1:

5

return 1

6

# 2.如果不是1,重复执行累加:

7

result = num + sum_numbers(num-1)

8

9

# 3.返回累加结

10

return result

11

12

13

14

15

sum_result = sum_numbers(3)

# 输出结果为6 print(sum_result)

执行结

lambda 表达式 

  1. lambda的应用场景如果一个函数有一个返回值,并且只有一句代码,可以使用 lambda简化
  2. lambda
  3.  lambda 参数列表 : 表达式
  4. lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。 lambda函数能接收任何数量的参数但只能返回一个表达式的值

快速入门

函数实现

def add(a, b):

return a + b

result = add(1, 2)

print(result)

列表数据按字典key的值排序

students = [
2	{'name': 'TOM', 'age': 20},
3	{'name': 'ROSE', 'age': 19},
4	{'name': 'Jack', 'age': 22}
]
# 按name值升序排列 students.sort(key=lambda x: x['name']) print(students)

# 按name值降序排列
students.sort(key=lambda x: x['name'], reverse=True) print(students)

# 按age值升序排列 students.sort(key=lambda x: x['age'])

高阶函数

函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。函数式编程就是指这种高度抽象的编程范式。

 体验高阶函数

需求:一个函数完成计算任意两个数字的绝对值之和。 在Python中, abs() 函数可以完成对数字求绝对值计算。

1    abs(-10)    # 10


def add_num(a, b):
return abs(a) + abs(b) 3
4
result = add_num(-1, 2)
print(result)	# 3

4.2.3 filter() filter(func, lst)函数用于过滤序列, 过滤掉不符合条件的元素, 返回一个 filter 对象,。如果要转换为列表,可以使用 list() 来转换。

1	list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2
3
def func(x):
return x % 2 == 0
6
7
8	result = filter(func, list1) 9
print(result)	# <filter object at 0x0000017AF9DC3198>
print(list(result))	# [2, 4, 6, 8, 10]

函数多返回值

问: 如果一个函数如些两个return (如下所示),程序如何执行?

答:只执行了第一个return,原因是因为return可以退出当前函数, 导致return下方的代码不执行

如果一个函数要有多个返回值,该如何书写代码?


按照返回值的顺序,写对应顺序的多个变量接收即可
变量之间用逗号隔开
支持不同类型的数据return

函数多种传参方式

使用方式上的不同, 函数有4中常见参数使用方式:
位置参数
关键字参数
缺省参数
不定长参数

位置参数

位置参数:调用函数时根据函数定义的参数位置来传递参数


注意:
      传递的参数和定义的参数的顺序及个数必须一致

关键字参数

关键字参数:函数调用时通过“键=值”形式传递参数.
作用: 可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求.


注意:
       函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序
 

缺省参数

缺省参数:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用).
作用: 当调用函数时没有传递参数, 就会使用默认是用缺省参数对应的值.

注意:
       函数调用时,如果为缺省参数传值则修改默认参数值, 否则使用这个默认值

不定长参数

不定长参数:不定长参数也叫可变参数. 用于不确定调用的时候会传递多少个参数(不传参也可以)的场景.
作用: 当调用函数时不确定参数个数时, 可以使用不定长参数

不定长参数的类型:
     ①位置传递
     ②关键字传递

位置传递

注意:
      传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是位置传递


关键字传递

注意:
      参数是“键=值”形式的形式的情况下, 所有的“键=值”都会被kwargs接受, 同时会根据“键=值”组成字典.


总结:

1. 掌握位置参数
     ·根据参数位置来传递参数

2. 掌握关键字参数
     ·通过“键=值”形式传递参数,可以不限参数顺序
      ·可以和位置参数混用,位置参数需在前

3. 掌握缺省参数
     ·不传递参数值时会使用默认的参数值
      ·默认值的参数必须定义在最后

4. 掌握不定长参数
     · 位置不定长传递以*号标记一个形式参数,以元组的形式接受参数,形式参数一般命名为args
      · 关键字不定长传递以**号标记一个形式参数,以字典的形式接受参数,形式参数一般命名为kwargs、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值