复习python函数

news2024/11/16 6:59:31

复习python函数

  • 1.对函数的理解
    • 函数的传递方式
    • 返回值 return
    • 可通过help()函数查看函数说明
    • 作用域
  • 2.不定长参数
  • 3.递归
  • 4.高阶函数
    • 将函数作为参数传递
    • 将函数作为返回值返回
  • 5.匿名函数
  • 6.装饰器

1.对函数的理解

函数可以用来保存一些可执行的代码,并且可以在需要时,对这些语句进行多次的调用。

def fn():
	print('hello')
# 调用
fn()

函数的传递方式

(1)定义形参
可以为形参指定默认值

def fn(a=5, b=10, c=20):
    print(a, b, c)

(2)实参的传递方式
实参可以传递任意类型的参数

  • 位置参数
fn(1,2,3)
  • 关键字参数
fn(a=5, b=6, c=7)
  • 混合使用关键字和位置参数,必须将位置参数写到前面
fn(1, 2,c=30)

返回值 return

def fn5():
    return 10
# fn5 和 fn5()区别
print(fn5)   # fn5是函数对象,打印fn5实际是在打印函数对象
print(fn5())   # fn5()是在调用函数,实际是打印函数的返回值 10

可通过help()函数查看函数说明

def fn(a:int, b:bool, c:str='hello')-> int:
    '''
    这是文档字符串实例
    :param a:整数参数
    :param b:布尔参数
    :param c:字符串参数
    :return:
    '''
    return 233

help(fn)

请添加图片描述

作用域

  • 全局变量
  • 局部变量
    如果希望在函数内修改全局变量,则需要使用global关键字来声明变量
a = 20
def fn3():
    global a
    a = 10
    print(a)  # 10

fn3()
print(a)   # 10

2.不定长参数

在定义函数时,可以在形参前边加上一个*,这样这个形参将会获取到所有的实参。
它将会将所有的实参保存到一个元组中。

a, b, *c = (1, 2, 3, 4, 5, 6)

*a会接受所有的位置实参,并且会将这些实参统一保存到一个元组中(装包)。

def fn(*a):
    print(a, type(a))

fn(1, 2, 3)

注意:带*的参数后的所有参数,必须以关键字参数的形式传递

def fn2(*, a, b, c):
    print(a, b, c)
fn2(a=1, b=2, c=3)

*形参只能接受位置参数,而不能接受关键字参数。
**形参可以接受其他关键字参数,它会将这些参数统一保存到一个字典中。
字典的key就是参数的名字,字典的vaLue就是参数的值。

def fn3(**a):
    print('a=', a, type(a))
fn3(a=1, b= 2)

结果:

a= {'a': 1, 'b': 2} <class 'dict'>

解包

# 参数的解包
def fn4(a, b, c):
    print(a, b, c)

# *对元组、列表解包
t = (10, 20, 30)
t = [10, 20, 30]
fn4(*t)   # 10,20,30

# **对字典解包
d = {'a':100,'b':200, 'c':300}
fn4(**d)   # 100,200,300

3.递归

递归式函数,在函数中自己调用自己。
递归式函数两个条件:
1.基线条件

  • 问题可以被分解为的最小问题,当满足基线条件时,递归就不在执行了

2.递归条件

  • 将问题继续分解的条件
# 求N!
def factorial(n):
    # 基线条件
    if n == 1:
        return 1

    # 递归条件
    return n * factorial(n-1)

# print(factorial(10))
# 创建一个函数,用来检查是否是回文字符串,如果是返回True,否则返回False
# 回文字符串,字符串从前往后念和从后往前念是一样的
def hui_wei(s):
    if len(s) < 2:
        return True
    elif s[0] != s[-1]:
        return False
    # 递归条件
    return hui_wei(s[1:-1])

print(hui_wei('ababa'))

4.高阶函数

高阶函数将函数作为参数传递
接收函数作为参数,或者将函数作为返回值的函数是高阶函数。

将函数作为参数传递

l = [1, 2, 3, 4, 5, 6, 7, 8, 9]

def fn2(i):
    if i % 2 ==0:
        return True
    return False

def fn3(i):
    if i > 5:
        return True
    return False

# 将函数作为参数传递
def fn(func, l):
    # 创建一个列表
    list = []
    # 对列表进行筛选
    for n in l:
        if func(n):
            list.append(n)

    return list
print(fn(fn2, l))

将函数作为返回值返回

将函数作为返回值返回,也是一种高阶函数,也称为闭包。
通过闭包可以创建一些只有当前函数能访问的变量,也可以将私有数据藏在闭包中。
形成闭包条件:
1.函数嵌套
2.将内部函数作为返回值返回
3.内部函数必须要使用到外部函数的变量

def fn():
    a = 10
    # 函数内部再定义一个函数
    def inner():
        print('我是fn2', a)
    # 将内部函数 inner作为返回值返回
    return inner
fn()()

5.匿名函数

lambda函数表达式专门用来创建一些简单的函数,他是函数创建的又一种方式。
语法:lambda 参数列表:返回值

def fn(a, b):
    return a + b
# 等价于上面的函数
lambda a,b : a+b

# 运用场景
l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# filter()方法不会把你的参数怎么样,但它像HR一样,决定你的去留
r = filter(lambda i: i < 5, l)
print(list(r))

# map()
# map()方法做逻辑运算(and or &)/运算符运算处理(+ - * /)
# 也就是map()一定会加工你的参数
# map()函数可以对可迭代对象中的所有元素做指定的操作,然后将其添加到一个新的对象中返回
r = map(lambda i : i**2, l)
print(list(r))

6.装饰器

通过装饰器,可以在不修改原来函数的情况下来对函数进行扩展。

def begin_end(old):
    """
    用来对其他函数进行扩展
    :param old: 要扩展的函数对象
    :return:
    """
    def new_function(*args, **kwargs):
        print("开始执行~")
        # 调用被扩展的函数
        result = old(*args, **kwargs)
        print('执行结束~')

    return new_function
@begin_end
def say_hello():
	print('大家好')
say_hello()

运行结果:
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1620257.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言—贪吃蛇(链表)超详解

目录 游戏背景 游戏展示效果 需要实现的功能 贪吃蛇地图绘制&#xff1a; 蛇吃食物的功能&#xff1a; 蛇的移动控制&#xff1a; 蛇撞墙死亡&#xff1a; 蛇撞自身死亡&#xff1a; 计算得分&#xff1a; 蛇身加速、减速&#xff1a; 暂停游戏&#xff1a; 技术要…

关注四个要点,以“韧性”助力大数据局数据安全体系化建设

近日&#xff0c;中国互联网协会数字政府发展工作委员会主办的“推进政务服务提质增效的思考与实践”主题沙龙活动在京举行&#xff0c;中央、地方政府信息化部门相关负责同志及工委会18家成员单位的业界专家和团队负责人参会。 美创科技获邀参加&#xff0c;技术专家张骥带来《…

神州设备互联接口IPV6地址用本地链路地址配置路由综合运用

一、基本配置: SW-1: SW-1>ena SW-1#conf SW-1(config)#ipv6 enable SW-1(config)#vlan 100 SW-1(config)#int l1 SW-1(config-if-loopback1)#ip add 1.1.1.1 255.255.255.255 SW-1(config-if-loopback1)#ipv6 add 2001:1::1/128 SW-1(config-if-loopback1)#e…

python绘制随机地形地图

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 当我们谈论计算机编程中的地图生成时&#xff0c;通常会想到游戏开发、仿真模拟或者数据可视…

使用预训练模型构建自己的深度学习模型(迁移学习)

在深度学习的实际应用中&#xff0c;很少会去从头训练一个网络&#xff0c;尤其是当没有大量数据的时候。即便拥有大量数据&#xff0c;从头训练一个网络也很耗时&#xff0c;因为在大数据集上所构建的网络通常模型参数量很大&#xff0c;训练成本大。所以在构建深度学习应用时…

大数据学习第四天

文章目录 yaml 三大组件的方式交互流程hive 使用安装mysql(hadoop03主机)出现错误解决方式临时密码 卸载mysql (hadoop02主机)卸载mysql(hadoop01主机执行)安装hive上传文件解压解决版本差异修改hive-env.sh修改 hive-site.xml上传驱动包初始化元数据在hdfs 创建hive 存储目录启…

毫米波雷达模块在高精度人体姿态识别的应用

人体姿态识别是计算机视觉领域中的重要问题之一&#xff0c;具有广泛的应用前景&#xff0c;如智能安防、虚拟现实、医疗辅助等。毫米波雷达技术作为一种无需直接接触目标就能实现高精度探测的感知技术&#xff0c;在人体姿态识别领域具有独特的优势。本文将探讨毫米波雷达模块…

kubeadmin搭建自建k8s集群

一、安装要求 在开始之前&#xff0c;部署Kubernetes集群的虚拟机需要满足以下几个条件&#xff1a; 操作系统 CentOS7.x-86_x64硬件配置&#xff1a;2GB或更多RAM&#xff0c;2个CPU或更多CPU&#xff0c;硬盘30GB或更多【注意master需要两核】可以访问外网&#xff0c;需要…

Python 全栈体系【四阶】(三十四)

第五章 深度学习 六、PaddlePaddle 图像分类 4. 思路及实现 4.1 数据集介绍 来源&#xff1a;爬虫从百度图片搜索结果爬取 内容&#xff1a;包含 1036 张水果图片&#xff0c;共 5 个类别&#xff08;苹果 288 张、香蕉 275 张、葡萄 216 张、橙子 276 张、梨 251 张&#…

NVIDIA Jetson jtop查看资源信息

sudo -H pip install -U jetson-stats 安装好之后可能需要reboot 执行jtop&#xff1a; 时间久了可能会退出&#xff0c;可参考如下再次启动。 nvidiategra-ubuntu:~$ jtop The jtop.service is not active. Please run: sudo systemctl restart jtop.service nvidiategra-ub…

【古琴】倪诗韵古琴雷修系列(形制挺多的)

雷音系列雷修&#xff1a;“修”字取意善、美好的&#xff0c;更有“使之完美”之意。精品桐木或普通杉木制&#xff0c;栗壳色&#xff0c;纯鹿角霜生漆工艺。 方形龙池凤沼。红木配件&#xff0c;龙池上方有“倪诗韵”亲笔签名&#xff0c;凤沼下方&#xff0c;雁足上方居中位…

mPEG-Biotin,Methoxy PEG Biotin在免疫亲和层析、荧光标记和生物传感器等领域发挥关键作用

【试剂详情】 英文名称 mPEG-Biotin&#xff0c;Methoxy PEG Biotin 中文名称 聚乙二醇单甲醚生物素&#xff0c;甲氧基-聚乙二醇-生物素 外观性状 由分子量决定&#xff0c;固体或者粘稠液体。 分子量 0.4k&#xff0c;0.6k&#xff0c;1k&#xff0c;2k&#xff0c;3.…

Activiti7基础

Activiti7 一、工作流介绍 1.1 概念 工作流(Workflow)&#xff0c;就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程&#xff0c;从而实现某个预期的业务目标&#xff0c;或者促使此目标…

2024-04-23 linux 查看内存占用情况的命令free -h和cat /proc/meminfo

一、要查看 Linux 系统中的内存占用大小&#xff0c;可以使用 free 命令或者 top 命令。下面是这两个命令的简要说明&#xff1a; 使用 free 命令&#xff1a; free -h这将显示系统当前的内存使用情况&#xff0c;包括总内存、已用内存、空闲内存以及缓冲区和缓存的使用情况。…

Git笔记-配置ssh

Git在Deepin中的ssh配置 一、环境二、安装1. 查看GitHub账户2. 配置 git3. 生成 ssh key 三、配置 一、环境 系统&#xff1a; Deepin v23 Git仓库&#xff1a;GitHub 二、安装 1. 查看GitHub账户 在设置界面看到自己的邮箱&#xff0c;这个邮箱就是后面会用到的邮箱 2. …

上位机图像处理和嵌入式模块部署(树莓派4b的一种固件部署方法)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 如果软件开发好了之后&#xff0c;下面就是实施和部署。对于树莓派4b来说&#xff0c;部署其实就是烧录卡和拷贝文件。之前我们烧录卡&#xff0c;…

Jenkins CI/CD 持续集成专题四 Jenkins服务器IP更换

一、查看brew 的 services brew services list 二、编辑 homebrew.mxcl.jenkins-lts.plist 将下面的httpListenAddress值修改为自己的ip 服务器&#xff0c;这里我是用的本机的ip 三 、重新启动 jenkins-lts brew services restart jenkins-lts 四 浏览器访问 http://10.85…

26版SPSS操作教程(高级教程第十三章)

前言 #今日世界读书日&#xff0c;宝子你&#xff0c;读书了嘛~ #本期内容&#xff1a;主成分分析、因子分析、多维偏好分析 #由于导师最近布置了学习SPSS这款软件的任务&#xff0c;因此想来平台和大家一起交流下学习经验&#xff0c;这期推送内容接上一次高级教程第十二章…

卓越体验的秘密武器:评测ToDesk云电脑、青椒云、天翼云的稳定性和流畅度

大家好&#xff0c;我是猫头虎。近两年随着大模型的火爆&#xff0c;我们本地环境常常难以满足运行这些大模型的硬件需求。因此&#xff0c;云电脑平台成为了一个理想的解决方案。今天&#xff0c;我将介绍并评测几款主流云电脑产品&#xff1a;ToDesk云电脑、天翼云电脑和青椒…

网络通信安全

一、网络通信安全基础 TCP/IP协议简介 TCP/IP体系结构、以太网、Internet地址、端口 TCP/IP协议简介如下&#xff1a;&#xff08;from文心一言&#xff09; TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff0c;传输控制协议/网际协议&#xff0…