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

DAY10 函数基础 定义函数的三种方式 函数的调用 函数参数的应用 可变长参数

目录
  • 函数
    • 定义阶段
    • 调用阶段
    • 定义:
  • 三种形式的函数
    • 无参函数
    • 有参函数
    • 空函数
  • 函数的返回值
  • 函数的调用
  • 函数参数的应用
    • 形参
    • 实参
    • 位置形参
    • 位置实参
    • 默认形参
    • 关键字实参
  • 可变长参数
    • *
      • *形参
      • *实参
    • **
      • **形参
      • **实参
    • 最终(*****)

函数

定义阶段

只识别语法,不执行函数体代码

调用阶段

执行函数体代码

定义:

def 函数名():代码块

三种形式的函数

无参函数

def 函数名():代码块

有参函数

def 函数名(参数1,参数2,...):代码块

空函数

def 函数名():pass   # 以后再写

函数的返回值

返回值是通过return关键字返回的

def 函数名():pass  # 默认返回None

最多的情况就是返回一个值

def self_max(x, y):if x > y:return xelse:return ymax_num = self_max(10,20)  day20
print(max_num * 2)  # 40
def get_list():return [1,2,3],len([1,2,3])get_list()  # ([1,2,3], 3)# 返回多个值得时候,会使用元祖接收多个值

return除了有返回值得作用,还有中止函数的作用,即不运行return后面的代码,也就是说一个函数可以有多个return,只要遇到了return就终止

函数的调用

普通的调用

def f1():passf1()

调用后做处理

def self_max(x, y):if x > y:return xelse:return ymax_num = self_max(10,20)  day20
print(max_num * 2)  # 40

函数参数的应用

形参

定义阶段的参数,叫做形参,形参只有描述意义,不是一个具体的值

实参

调用阶段传入的值,是一个具体数据类型的值

def f1(x, y):return x + yz = f1(1, 2)
print(z)

位置形参

从左到右放入

位置实参

从左到右与形参一一对应

默认形参

def f1(y, x=1):return x + yz = f1(2)  # y=2, x=1
print(z)

一般用于形参经常使用同一个值得时候,默认形参必须在位置形参的后面

关键字实参

def f1(x, y, a):return x + y + az = f1(1, y=2, a=1)  # y=2, a=1
print(z)

一般用于参数较多的时候,指定传值,可以打乱顺序传值,关键字实参必须得在位置实参的后面

可变长参数

*

*形参

def f1(*args):print(args)return argsf1(1,2,3,4,5,6,7,8)  # (1, 2, 3, 4, 5, 6, 7, 8)

*实参

def f1(a,b,c,d):print(a,b,c,d)  # 1 2 3 4tup = (1,2,3,4)
f1(*tup)  # f1(1,2,3,4)

**

**形参

def f1(**kwargs): # {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'f': 5}print(kwargs)f1(a=1,b=2,c=3,d=4,f=5)

**实参

def f1(a,b,c,d,e):print(a,b,c,d,e)  # 1 2 3 1 2dic = {'d':1,'e':2}  # **dic  ==> d=1,e=2
f1(1,2,3,**dic)  # f1(1,2,3,d=1,e=2)

最终(*****)

def f1(*args,**kwargs):print(args,kwargs)f1(1,2,3,4,5,5,6,6,a=1,b=2,c=4)  # 位置实参,关键字实参
http://www.sczhlp.com/news/7545/

相关文章:

  • 基于@Autowired进行依赖注入的三种常见方式
  • 3000字节C语言实现GPT-2聊天机器人
  • Android 16 仍不支持 2 声道以上录音
  • Linux环境下的渗透测试实战指南
  • 腾讯iOA技术指南:实现数据防泄漏与高级威胁防护
  • 利用ruoyi框架开发自己的后台管理系统日志(8.7)
  • P10102 [GDKOI2023 提高组] 矩阵
  • 如何将一个类交给IOC容器管理?
  • 集训内容总结 day9:模拟赛 Round2
  • HFSS许可证安装与配置
  • logback模板
  • 2025牛客暑期多校训练营8 J Multiplication in Base the Square Root of -2
  • 用于遥感语义分割的多级多模态融合Transformer
  • @RestController注解的作用
  • 2025.8.7
  • 【10章】Java大模型工程能力必修课,LangChain4j 入门到实践
  • yml配置文件
  • 没有 Mac,团队内部如何协同上架 iOS App?实战指南
  • 微算法科技(NASDAQ:MLGO)利用集成学习方法,实现更低成本、更稳健的区块链虚拟货币交易价格预测
  • 送票!2025云栖大会9月24-26日杭州见
  • Java平台无关性的实现原理
  • XML映射配置
  • @Param注解
  • uefi 内存管理
  • 攻防世界web
  • VC6800智能相机:赋能智能制造,开启AI视觉新纪元
  • Mapper接口:查询用户-select
  • 《聚会》(原模拟赛总结)
  • SM341700的脚本
  • 基于Spring AI Alibaba 搭建简单 AI 聊天项目