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

Python 入门:初识函数

摘要

本文从实际场景出发,通俗易懂地讲解 Python 函数的概念、定义、调用、返回值与参数(位置参数、关键字参数、默认参数),附大量可直接运行的代码示例,新手友好,零基础也能看懂。


一、什么是函数?

写代码时,有些功能需要反复执行。如果每次都重复写相同代码,既麻烦又不好维护。

函数:对代码块和功能的封装和定义,需要时直接 “调用” 即可。

场景举例:重复执行 “约会” 流程

如果不用函数,每次都要写一遍:

# 约一次 print("拿出手机") print("打开陌陌") print("找个漂亮的妹子") print("问她, 约不约啊?") print("OK. 走你!") ​ # 再来一次 print("拿出手机") print("打开陌陌") print("找个漂亮的妹子") print("问她, 约不约啊?") print("OK. 走你!")

用循环可以无限执行,但无法按需执行

while 1: print("拿出手机") print("打开陌陌") print("找个漂亮的妹子") print("问她, 约不约啊?") print("OK. 走你!")

解决方案:用函数封装功能,需要时调用即可。


二、函数的定义、函数名、函数体及调用

1. 函数定义语法

使用def关键字定义:

def 函数名(): 函数体 # 要执行的代码

2. 定义一个 “约会” 函数

def yue(): print("拿出手机") print("打开陌陌") print("找个漂亮的妹子") print("问她, 约不约啊?") print("OK. 走你!")

定义后不会自动执行,需要手动调用。

3. 函数调用

语法:函数名\(\)

# 调用函数 yue()

输出:

拿出手机 打开陌陌 找个漂亮的妹子 问她, 约不约啊? OK. 走你!

4. 多次调用

yue() yue() yue()

想调用几次就调用几次,代码简洁。


三、函数的返回值

执行完函数后,用return返回结果。

1. return 的特点

  • 遇到return,函数立即结束,后续代码不执行。

def yue(): print("约你") print("约我") print("约他") return print("约谁呀") # 不会执行 ​ yue()

2. 返回单个值

def yue(): print("约他") print("约你") print("约我") return "美女一枚" girl = yue() print(girl) # 输出:美女一枚

3. 返回多个值(自动封装为元组)

def yue(): return "美女一枚", "萝莉一枚" result = yue() print(type(result)) # <class 'tuple'> print(result) # ('美女一枚', '萝莉一枚') # 解包赋值 girl1, girl2 = yue() print(girl1, girl2)

4. 返回值总结表

情况返回值
无 return /return 后无值None
return 单个值单个数据
return 多个值元组(tuple)

四、函数的参数

参数用于给函数传递数据,让函数更灵活。

1. 形参 vs 实参

  • 形参:定义函数时括号里的变量(形式参数)

  • 实参:调用函数时传入的实际值(实际参数)

def yue(chat): # chat 是形参 print("拿出手机") print("打开" + chat) print("找个漂亮的妹子") print("约不约") yue("微信") # "微信" 是实参 yue("陌陌") yue("探探")

2. 位置参数

顺序传参,一一对应。

def yue(chat, address, age): print("拿出手机") print("打开" + chat) print(f"找个{address}附近漂亮的{age}岁妹子") print("约不约") # 位置传参:顺序必须一致 yue("微信", "北京", 18)

3. 关键字参数

参数名传参,顺序无关。

def yue(chat, address, age): print("拿出手机") print("打开" + chat) print(f"找个{address}附近漂亮的{age}岁妹子") # 关键字传参:不用记顺序 yue(chat="微信", age=18, address="北京")

4. 混合参数(位置 + 关键字)

规则:位置参数必须在前,关键字参数在后。

# ✅ 正确 yue("微信", age=18, address="上海") # ❌ 错误:关键字参数在前 yue(age=18, "微信", address="广州")

5. 默认值参数

定义时给参数默认值,调用时可传可不传。规则:默认参数必须放在位置参数之后。

# sex 默认值为 "男" def stu_info(name, age, sex="男"): print("录入学生信息") print(name, age, sex) # 不传 sex,用默认值 stu_info("张强", 18) # 传 sex,覆盖默认值 stu_info("小红", 17, "女")

6. 参数分类总结表

实参角度(调用时)
类型说明示例
位置参数按顺序传参yue\(\&\#34;微信\&\#34;, \&\#34;北京\&\#34;, 18\)
关键字参数按名字传参yue\(age=18, chat=\&\#34;微信\&\#34;\)
混合参数位置在前,关键字在后yue\(\&\#34;微信\&\#34;, age=18\)
形参角度(定义时)
类型说明示例
位置参数无默认值,必传def f\(a, b\):
默认值参数有默认值,可选传def f\(a, b=0\):

五、练习:写一个求最大值函数

基础版

def my_max(a, b): if a > b: return a else: return b print(my_max(5, 9)) # 9

三元运算符简化版

def my_max(a, b): return a if a > b else b print(my_max(12, 7)) # 12
http://www.jsqmd.com/news/900811/

相关文章:

  • 告别CH340!用ESP32-S3的USB CDC功能实现零成本串口打印与调试(ESP-IDF 4.4环境)
  • 从微信抢红包到数据备份:5个真实Python小项目带你玩转schedule定时任务库
  • 人工智能-现代方法(四)
  • 【ChatGPT】电子束光刻机EBL 深度拆解、爆炸图10张、信息图10张、下位机C++、上位机C#、PLC代码框架
  • 信号处理/通信算法必看:用Wirtinger导数搞定复数域梯度下降(附Python代码)
  • 从TI杯B题到毕业设计:手把手教你复刻一个自动泊车小车(附STM32/OpenMV代码)
  • 安全攻防 - 04 GMSSL 工程介绍
  • 从‘退化因子’到‘健康指标’:给你的机器人状态估计做个‘体检’
  • ChatGPT销售话术优化:今天不重构话术逻辑,明天就被AI增强型竞品碾压——来自17家已部署企业的紧急预警
  • 网站渗透实操!从getshell到CVE提权,Linux最新内核也可提权!
  • Ambari 3.0+Kafka安全认证
  • 告别3D卷积!RAFT-Stereo如何用GRU迭代优化在Middlebury拿下第一?
  • 架构师的底层重构逻辑:面部松弛、纹路加深?用3大核心参数选对高阶胶原饮
  • 语言脑机接口解码流程对比【脑机接口恢复语言2】
  • 别让天线罩毁了你的毫米波雷达!从材料选择到壁厚计算,一份给硬件工程师的避坑指南
  • 灰子学Ai: Token与字节
  • STM32L0 LPUART串口卡死?别慌,HAL库ORE溢出错误的保姆级排查与修复指南
  • 告别纸上谈兵:用Wireshark抓包实战解析5G N2/NGAP切换全流程(附pcap文件)
  • 索引设计 实操SQL + 案例 + 练习
  • k8s-Prometheus的manifests 清单部署
  • 别再乱试了!用Wireshark精准定位微信/QQ通话IP的保姆级教程(附过滤语法)
  • 研一开学别慌!用这套保姆级YOLOv5实战路线,从零到跑通代码只要三个月
  • 保姆级教程:用Grad-CAM可视化Swin Transformer,看看你的模型到底在“看”哪里
  • 手机变Linux开发机:用Termux和MT管理器打造移动端代码编辑与文件管理环境
  • .NET + 消息队列:稳稳扛住百亿流水,这才是企业级架构的真正底气
  • sd卡病毒格式化文件怎么恢复正常,只需4种方法和视频演示轻松恢复数据
  • 如何高效使用AutoDingding实现钉钉自动打卡:终极实用指南
  • S32K3xx低功耗实战:用LPUART串口唤醒Standby模式,保姆级配置流程(基于Platform SDK 2022.03)
  • 第 3 篇:把 MCP 接入 AI,以及生态里有什么
  • STM32F1用HAL库驱动42步进电机:CubeMX配置PWM定时器(TIM3)保姆级教程