Python基础入门 --- 7.函数

Python基础入门

第七章:

7.函数

7.1 函数多返回值

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

def test_return():return 1,"hello", Truex, y, z = test_return()
print(x) # 1
print(y) # hello
print(z) # True
7.2 函数多种传参方式

参数种类:

  • 位置参数

  • 关键字参数

  • 缺省参数

  • 不定长参数

7.2.1 位置参数

概念:调用函数时根据函数定义的参数位置来进行传递参数。

def Student(name, sex, age):print(f"我的名字是{name},性别是{sex},今年{age}岁") # 我的名字是小明,性别是男,今年18岁
Student("小明", "男", 18)

补充:传递的参数和定义的参数顺序及个数需相同。

7.2.2 关键字参数

概念:函数调用时通过‘键=值’形式传递参数。

作用:让函数更加清晰、易使用,清除了参数的顺序需求。

def Student(name, sex, age):print(f"我的名字是{name},性别是{sex},今年{age}岁")
Student(name = "小明", age = 20, sex = "男")
Student(sex = "女", age = 18, name = "小红")
Student( "小李", age = 19, sex = "男")

补充:函数调用时,如有位置参数,位置参数须在关键字参数前,但关键字参数之间不分先后顺序。

7.2.3 缺省参数

概念:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,函数调用时可不传该默认参数的值,所有位置参数必须出现在默认参数前,包括函数定义以及调用。

作用:函数调用时没传递参数,就会使用默认值用缺省参数对应的值。

补充:函数调用时,如果为缺省参数传值则修改默认参数值,否则使用该默认值。

7.2.4 不定长参数

概念:不定长参数也叫可变参数,用于不确定调用时会传递多少个参数(可不传参)的场景。

作用:函数调用时不确定参数个数时,可用不定长参数

类型

  • 位置传递

  • 关键字传递

位置传递
def Student(*args):print(args)
Student("小明", "211515", 20) # ('小明', '211515', 20)
Student("小红",  18)          # ('小红', 18)

补充:传进的所有参数都会被args变量收集,其会根据传进参数的位置合并成一个元组,args是元组类型,这就是位置传递。

关键字传递
def Student(**kwargs):print(kwargs) # {'name': '小明', 'sex': '男', 'age': 18}
Student(name="小明", sex="男", age=18)

补充:参数是‘键=值’形式的形式情况下,所有的‘键=值’都会被kwargs接受,会根据‘键=值’组成字典。

7.3 匿名函数
7.3.1 函数作为参数传递

作用:传入计算逻辑,并非传入数据。

# 定义一个函数,接收另一个函数作为传入参数
def test(calculate):ret = calculate(10, 20)print(ret)# 定义一个函数,作为参数传入另一个函数
def calculate(x, y):return x + y;# 调用并传入参数
test(calculate) # 30

这是种计算逻辑的传递,并非数据的传递。不仅是相加、相除、等任何逻辑都可自行定义并作为函数传入。

7.3.2 Lambda匿名函数

函数定义

  • def关键字,可定义带有名称的函数

  • lamda关键字,可定义匿名函数(无名称)

有名称的函数,可基于名称重复使用。

无名称的匿名函数,只可临时使用一次。

语法结构:lamba 传入参数:函数体(一行代码)

  • lamba为关键字,表示定义匿名函数

  • 传入参数表示匿名参数的形式参数

  • 函数体为函数的执行逻辑,只能写一行代码,无法写多行。

# 定义一个函数,接收其他函数输入
def test(calculate):ret = calculate(10, 20)print(ret)# 通过lambda匿名函数的形式,将匿名函数作为参数传入
为参数传入
test(lambda x, y: x + y) # 30

下一章:Python基础入门 — 6.数据容器

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

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

相关文章

刷力扣看见一个寻找单身狗的问题?【力扣题解】

今天刷力扣遇到一道有意思的题目,题目是写着撞色问题177 ,当我写完这个题去看看有什么好的解题方式的时候,看见一个有趣的题解问题,他对这个题目的描述是几对情侣,带几个单身狗出去玩,然后现在我们要把这几…

天文馆3D可视化:揭秘宇宙星辰的奇幻之旅

在这个科技日新月异的时代,我们似乎离神秘的宇宙越来越近。 天文馆作为普及天文知识、展示宇宙奥秘的重要场所,一直备受人们的喜爱。然而,传统的天文馆展示方式往往局限于平面图片和简单的模型,无法让人真正感受到宇宙的浩瀚与壮丽…

[Java安全入门]五.CC3

一.前言 前几天学了一下cc1和cc6,对于我来说有点小困难,不过经过几天沉淀,现在也是如拨开云雾见青天,经过一上午的复习对cc1和cc6又有深入的了解。所以,今天想多学一下cc3。cc3执行命令的方式与cc1和cc6不一样&#x…

Linux: boot: latency启动延迟分析

https://elinux.org/images/6/64/Chris-simmonds-boot-time-elce-2017_0.pdf https://www.hcltech.com/sites/default/files/documents/resources/whitepaper/files/an_insight_to_optimize_embedded_linux_boot_time_performance.pdf 无意看到这个启动延迟分析,虽…

Java与Go:指针

在计算机内存中,每个变量都有一个唯一的地址,指针就是用来保存这个地址的变量。通过指针,我们可以间接地访问和修改存储在该地址处的数据。今天我们来聊一聊Java和Go指针,预告一下,我们需要借助C语言做一些小小的比较。…

Redis的五种数据类型与常用命令示例

Redis的五种数据类型 String(字符串)、List(列表)、Set(集合)、Hash(哈希)和Zset(有序集合),每种数据类型都有一些常用的操作命令。 1、String类…

【堆】Top-K问题

标题:C语言库函数scanf()解读 水墨不写bug (图片来源于网络) 正文开始: Top-K问题是一类问题的统称: 即根据对象的某一属性,找出这个属性最突出的K个对象,并且通常对象…

专升本 C语言笔记-10 指针数组 和 数组指针

一、数组 和 指针 的区别 数组和指针的介绍1、指针是一个变量,它存储了一个内存地址,该地址指向一个变量的存储位置。2、通过指针,可以访问和修改指向的变量。3、数组是一个由相同数据类型元素组成的集合,可以通过索引来访问和修改…

Linux-网络基础-套接字详细过程

目录 一、数据传输IP地址端口协议网络字节序网络通信--五元组 二、socket套接字1、udp、tcp区别2、套接字接口(udp通信程序)通信流程:接口代码(udp) 3、套接字接口(tcp通信程序)通信流程&#x…

Spring Validation

Spring Validation Spring Validation核心概念核心组件常用注解使用示例高级特性工作原理深入细节实践中的Spring Validation结论 Spring Validation 在现代Web应用开发中,确保用户输入数据的正确性和合法性是至关重要的。Spring Validation作为Spring框架中的一个…

22. UE5 RPG使用MMC根据等级设置血量和蓝量(下)

上一篇,我们实现了玩家角色和敌人的等级的获取,使用MMC的提前工作已经准备完成,那么,这一篇讲一下,如何使用MMC,通过角色等级和体力值设置角色的最大血量。 MMC 全称 Mod Magnitude Calculation&#xff0c…

基于springboot的同城宠物帮养照看平台

技术:springbootmysqlvue 一、背景 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统同城上门喂遛宠物…

Java学习六—面向对象

一、关于面向对象 1.1简介 Java 是一种面向对象编程语言,其核心思想是面向对象编程(Object-Oriented Programming,OOP)。 面向对象编程是一种程序设计范式,它将数据与操作数据的方法(函数)捆…

软件工程-第三版王立福-第1章 绪论

本书结合IEEE最新发布的软件工程体系SWEBOK,和IEEE/ACM软件工程学科小组公布的软件工程教育知识体系SEEK,北大本科生指定教材。注重基础知识的系统性,选材的先进性及知识的应用。2009年出版 软件开发本质的认识,两大技术问题&…

JUnit5的条件测试、嵌套测试、重复测试

条件测试 JUnit5支持条件注解,根据布尔值判断是否执行测试。 自定义条件 EnabledIf和DisabledIf注解用来设置自定义条件,示例: Test EnabledIf("customCondition") void enabled() { // ... } Test DisabledIf("cust…

代码随想录算法训练营第五十一天|动态规划|309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费、总结

309.最佳买卖股票时机含冷冻期 文章 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与多笔…

Java并发基石ReentrantLock:深入解读其原理与实现

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在Java的并发编程库中,ReentrantLock是一种非常重要的同步工具,它提供了一种比内置synchronized关键字更加…

科研学习|研究方法——实验法

1.实验方法的渊源 今天我们说物理学、生物学是实验的科学,应该不会有人再持异议了,然而连物理学这样的学科在历史上也并非一开始就是实验科学。在2000多年以前的亚里士多德时代,众人都认为物理学是非实验性质的,物理学成为实验科学…

netty基础_12.用 Netty 自己实现简单的RPC

用 Netty 自己实现简单的RPC RPC 基本介绍我们的RPC 调用流程图己实现 Dubbo RPC(基于 Netty)需求说明设计说明代码封装的RPCNettyServerNettyServerHandlerNettyClientHandlerNettyClient 接口服务端(provider)HelloServiceImplServerBootstrap 客户端(…

第四百一十四回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"自定义标题栏"相关的内容,本章回中将介绍自定义Action菜单.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在这里提到的…