【第九课】 函数(下)

发布于:2023-01-01 ⋅ 阅读:(417) ⋅ 点赞:(0)


前言

这次我们来深入了解一下函数的“真面目”,函数其实就是一个实现一段功能的代码块,可以理解为一个方法,一个功能。对外是一个整体,对内,函数也有自己的运算逻辑。我们可以把函数想象成一辆车子,对外,车子是实现出行这一项功能的,对内,车子本身的内部系统有自己的运行方式。


一、函数的返回值

return 关键字

return语句有以下三个特征需要了解:

  • return 语句会提前退出函数
def func():
    print('我是return语句前面的代码')
    return
    print('我是return语句后面的代码')


func()

# 输出结果如下:
我是return语句前面的代码

  • return 返回的值到函数调用处需要用变量接收
def func():
    a = '我是字符串a'
    b = '我是字符串b'
    return a


a = func() # 接收的变量名自定义
print(a)

# 输出结果如下:
我是字符串a

  • return 在函数体内返回多个值的时候需要用逗号隔开
def func():
    a = '我是字符串a'
    b = '我是字符串b'
    return a, b


a, b = func()
print(a, b)

# 输出结果如下:
我是字符串a 我是字符串b

二、函数的作用域

作用域:作用于某一部分区域

这里只讲解两种作用域,即局部作用域和全局作用域

a = '我是函数体外的全局变量'


def func():
    print(a)


func()
print(a)

# 输出结果如下:
我是函数体外的全局变量
我是函数体外的全局变量

由上图得知,当局部没有找到变量a时,就会往上一级寻找全局变量

a = '我是函数体外的全局变量'


def func():
    a = '我是函数体内的局部变量'
    print(a)


func()
print(a)

# 输出结果如下:
我是函数体内的局部变量
我是函数体外的全局变量

由上图得知,局部作用域只是作用于一小部分区域,全局作用域范围更广

总结:局部作用域只是作用于一小部分区域,而全局作用域是作用于整个py文件,可以在py文件的任意地方使用

三、作用域的优先级

局部作用域 > 全局作用域 > 内建作用域

作用域范围越小,作用域的优先级就越大

四、其他内置方法

  • range()
    • range(start, stop, step) :生成一个序列
      • start : 起始值,默认为0
      • stop : 结束值,不包含
      • step :步长,默认为1
for i in range(9):
    print(i)

# 输出结果如下: 
0
1
2
3
4
5
6
7
8
  • filter()
    • filter(func, iterbale) : 用于过滤不符合条件的元素,返回filter对象
      • func : 自定义函数
      • iterable : 可迭代对象
def func(n):
    return n % 2 == 0
# 自定义函数

li = [1, 2, 3, 4, 5, 6, 7, 8, 9] # 可迭代对象
new_li = filter(func, li) # 传入自定义函数和可迭代对象,返回filter对象
print(new_li) # 输出filter对象
print(list(new_li)) # 将filter对象强转为列表

# 输出结果如下:
<filter object at 0x0000029F35582548>
[2, 4, 6, 8]
  • zip()
    • zip(iter1,iter2…) : 用于将可迭代对象作为参数,将对象中的元素一一对应打包,返回一个zip对象
      • iter : 可迭代对象
li1 = [1, 2, 3] # 可迭代对象一
li2 = [4, 5, 6] # 可迭代对象二
print(zip(li1, li2)) # zip打包,返回zip对象
print(list(zip(li1, li2))) # 强转为列表
print(dict(zip(li1, li2))) # 强转为字典

# 输出结果如下:
<zip object at 0x00000216B58E2448>
[(1, 4), (2, 5), (3, 6)] # 列表
{1: 4, 2: 5, 3: 6} # 字典


总结

关于函数就分享到这里,欢迎各位大佬评论交流,也欢迎各位大佬批评指正


网站公告

今日签到

点亮在社区的每一天
去签到