当前位置: 首页 > news >正文

10 python函数(下)

一、函数的说明文档

函数是纯代码语言,如果需要一行行去阅读才能理解它的意思,就没有效率,我们编写函数是为了提高效率,只要知道怎么使用就可以了,那就需要有文档进行说明。
我们在函数上面停留一会,就会显示该函数的说明文档,比如print函数,下面就是print的说明文档。

说明文档的定义

通过多行注释的形式,对函数进行说明

要形成说明文档,必须放在函数体之前。

def 函数名(参数列表):
    """
    函数说明
    :param 参数列表:
    :return:
    """
    函数体
    return 函数返回值
def add(x, y):
    """
    求 x 和 y 的和
    :param x: 参数x的说明
    :param y: 参数y的说明
    :return: 返回值的说明 返回和
    """
    return x + y

print(add(1, 2))

:param:添加参数的说明,参数类型呀,功能啊 都可以放在这里
:return:返回值说明,说明返回的值类型呀,什么数据呀,可以放在这里

 

二、嵌套函数

所谓嵌套函数就是在一个函数里再调用一个函数,这个很好理解,每个函数可能就是由大大小小的函数构成的,就像一个泡咖啡牛马,他可以有泡咖啡功能,也可以有泡茶功能


在函数名2里调用函数名1,就属于嵌套函数。调用函数名1后,要等待函数名1实行完毕返回才会继续继续函数名2。

def say_hello():
    print("hello")
    return

def robot():
    print("我是机器人")
    say_hello()
    print("很高兴认识你")
    return

robot()
# 我是机器人
# hello
# 很高兴认识你

在执行完第一个输出语句print("我是机器人")后调用say_hello函数,要等待say_hello函数执行完
print("hello")之后才能继续执行print("很高兴认识你")。

三、lambda(匿名函数)

lambda 函数是一种特殊的函数,它很小,没有像普通函数那样正式的名字,所以叫匿名函数。
它只能有一个表达式,不用像平常那样,用 def 关键字来定义函数

通常在一些需要把函数当作参数传递的地方,lambda 函数就会大显身手。像 map ()、filter ()、reduce () 这些内置函数,lambda 函数和它们搭配起来,能发挥出超强的功能!

lambda 函数的特点

  1. 没有名字:lambda 函数没有自己的名字,想要用它的话,要么把它赋值给一个变量,要么把它当作参数传给其他函数。
  2. 简洁到极致:lambda 函数一般就只有一行代码,特别适合写那些简单的小功能,简单又高效,就像给编程加上了 “快捷键”!

lambda 函数的语法格式:

lambda 参数列表: 表达式 

  • lambda是 Python 专门用来定义匿名函数的关键字。
  • 参数列表里可以有零个或者好多参数,这些参数都要放在冒号前面,它们是函数的 “小助手”,帮函数完成任务。
  • 表达式是真正施展魔法的地方,它会计算出一个结果,这个结果就是函数的返回值。

如示例:省掉了def的定义,省掉了return的返回,简写成了一行。 

x = lambda a : a + 10
print(x(5)) # 15

 与内置函数的联动

from functools import reduce
numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y : x * y, numbers)
print(product) # 120

使用 reduce() 和 lambda 函数计算乘积 :

在上面的实例中,reduce() 函数通过遍历 numbers 列表,并使用 lambda 函数将累积的结果不断更新,最终得到了 1 * 2 * 3 * 4 * 5 = 120 的结果。

四、变量在函数中的作用域

变量的作用域是指变量起作用的范围,主要分为两类:全局变量、局部变量

1、局部变量

所谓局部变量是定义在函数体内的变量,只在函数里生效
主要作用是在函数体内部起到临时存放数据的功能,使用完毕就释放了。

def say_hello():
    num = 10
    print("say Hello World %d 次" % num)

say_hello()
# say Hello World 10 次

 num只能在函数内部使用,如果在外部使用,就会报错

def say_hello():
    num = 10
    print("say Hello World %d 次" % num)

say_hello()
print(num)

 

2、全局变量

 所谓全局变量,就是在函数内,函数外都能使用的变量,在函数外进行定义

num = 10
def say_hello():
    print("say Hello World %d 次" % num)

say_hello()
print(num)
# say Hello World 10 次
# 10

将num移动到函数外面去,函数内外都可以使用了。

3、global关键字

如果我们在函数里修改了全局变量会如何,如下代码

num = 10
def say_hello():
    print("say Hello World %d 次" % num)

def say_hi():
    num = 20
    print("say hi %d 次" % num)

say_hello()
say_hi()
print(num)
# say Hello World 10 次
# say hi 20 次
# 10

在say_hi里,给num赋值了20,在say_hi里生效了,为啥出来后,还是10呢

原来,这里num是两个不同的变量,外部的是全局变量,在say_hi里定义的num是属于say_hi的局部变量,改变的是自己的变量,当然影响不到外部的。

为什么python里不能直接修改外部变量呢,假如可以修改,那我们在函数里面定义的局部变量,再通过外部再定义一次,不就可以修改函数里的变量了么?这得多混乱,所以函数里定义的变量和外部同名也是新的局部变量

那么我们在函数里怎么去修改外部的变量呢?只要加上global关键字就可以了

global 全局变量

num = 10
def say_hello():
    print("say Hello World %d 次" % num)

def say_hi():
    global num
    num = 20
    print("say hi %d 次" % num)

say_hello()
say_hi()
print(num)
# say Hello World 10 次
# say hi 20 次
# 20

相关文章:

  • 2025 使用docker部署ubuntu24容器并且需要ubuntu24容器能通过ssh登录SSH 登录的Ubuntu24容器
  • 持续集成(CI)/持续部署(CD)
  • 使用 Hybrids 创建Web Component的操作指南
  • AI革命!蓝耘携手海螺AI视频,打造智能化视频新纪元
  • 华为OD机试 - 猜字谜 - 双指针(Java 2024 E卷 100分)
  • Unocss 和 Tailwindcss 对比
  • 对cookie的理解
  • LINUX网络编程API原型详细解析
  • windows环境下NER Python项目环境配置(内含真的从头安的perl配置)
  • [QMT量化交易小白入门]-三十五、如何将聚宽策略信号转为QMT实盘交易
  • HarmonyOS Next~鸿蒙系统性能优化全解析:检测、分析与场景实践
  • 乐享数科:政策助推假日经济,2月普惠金融-景气指数稳中有升
  • 开关电源有些什么作用?
  • 多无人车协同探索开源包启动文件介绍(上)
  • win32汇编环境,网络编程入门之八
  • Linux中的selinux,磁盘管理
  • MySQL配置主从复制教程(MySQL8)
  • 关于依赖注入
  • 小蓝的括号串1(栈,蓝桥云课)
  • Python散点图(Scatter Plot):数据探索的“第一张图表”
  • 网站栏目规划/网站推广哪个好
  • 惠州网站建设(推荐乐云践新)/腾讯广告
  • 网站开发公司会在最后面加上公司/河北seo技术培训
  • 龙岩网站建设推广/雅虎搜索引擎入口
  • thinkphp 企业网站/网上广告怎么推广
  • 郑州网站的优化/女教师遭网课入侵直播录屏曝光8