Python函数基础实战教程:从定义调用到参数传值全解析

news/2025/12/8 21:08:59/文章来源:https://www.cnblogs.com/pycxy/p/19323655

一、Python函数核心意义:为什么要学函数基础?

Python函数是代码复用、逻辑封装的核心载体,也是新手从「线性代码编写」过渡到「模块化编程」的关键。无论是自动化脚本、数据分析还是Web开发,函数都能让代码更简洁、易维护——比如重复执行10次的数据分析逻辑,封装成函数后只需调用1行代码,而非复制粘贴10遍。

二、函数基础:定义与调用的3步核心操作

1. 函数定义:最基础的语法结构

Python函数通过def关键字定义,核心结构包含「函数名、参数、函数体、返回值」4个部分,零基础也能快速上手:

# 基础格式:def 函数名(参数): 函数体; return 返回值
def calculate_sum(a, b):"""计算两个数的和(函数文档字符串,可选但推荐)"""result = a + breturn result  # 返回计算结果

关键说明

  • def:固定关键字,必须以冒号:结尾;
  • 函数名:遵循小写+下划线命名规则(如calculate_sum),避免与Python内置函数重名(如sumlen);
  • 参数:括号内的变量(如ab),是函数接收的输入;
  • 函数体:缩进(4个空格)的代码块,是函数的核心逻辑;
  • return:可选,用于返回结果,无return则默认返回None

2. 函数调用:让函数「跑起来」

定义函数后需调用才能执行,调用格式为「函数名(参数值)」,示例如下:

# 调用上面定义的calculate_sum函数
total = calculate_sum(3, 5)
print(total)  # 输出:8# 无返回值函数的调用
def print_hello():print("Hello Python函数!")print_hello()  # 输出:Hello Python函数!

新手避坑:调用函数时参数数量必须与定义匹配(如定义2个参数却传1个,会报TypeError)。

3. 函数文档字符串:提升代码可读性

在函数开头用三引号""" """编写说明,既是注释也是「函数说明书」,通过help()可查看:

# 查看函数文档
help(calculate_sum)
# 输出:
# Help on function calculate_sum in module __main__:
# calculate_sum(a, b)
#     计算两个数的和(函数文档字符串,可选但推荐)

三、参数传递:必选/默认/可变参数全解析

参数是函数的「输入接口」,新手需重点掌握3类常用参数,解决「传值不对」的核心问题。

1. 必选参数(位置参数)

最基础的参数类型,调用时必须按顺序传入,数量不能多也不能少:

# 定义必选参数函数
def get_info(name, age):print(f"姓名:{name},年龄:{age}")# 正确调用(按位置传参)
get_info("张三", 25)  # 输出:姓名:张三,年龄:25# 错误调用(少传参数)
get_info("李四")  # 报错:TypeError: get_info() missing 1 required positional argument: 'age'

2. 默认参数:给参数设「默认值」

调用时可省略的参数,适合「大部分场景固定值,少数场景需修改」的需求:

# 定义带默认参数的函数(默认城市为北京)
def get_user_info(name, age, city="北京"):print(f"姓名:{name},年龄:{age},城市:{city}")# 调用1:使用默认城市
get_user_info("王五", 30)  # 输出:姓名:王五,年龄:30,城市:北京# 调用2:修改默认城市
get_user_info("赵六", 28, "上海")  # 输出:姓名:赵六,年龄:28,城市:上海

注意:默认参数必须放在必选参数后面,否则会报语法错误。

3. 可变参数:接收任意数量的参数

当不确定参数数量时,用*args(接收任意数量位置参数)或**kwargs(接收任意数量关键字参数):

# 1. *args:接收多个位置参数(打包成元组)
def sum_many(*args):total = 0for num in args:total += numreturn totalprint(sum_many(1,2,3))  # 输出:6
print(sum_many(5,10,15,20))  # 输出:50# 2. **kwargs:接收多个关键字参数(打包成字典)
def print_info(**kwargs):for key, value in kwargs.items():print(f"{key}:{value}")print_info(name="孙七", age=35, job="工程师")
# 输出:
# name:孙七
# age:35
# job:工程师

四、返回值:函数的「输出结果」

return语句决定函数的输出,新手需掌握3个核心要点:

1. 单个返回值

def get_max_num(a, b):if a > b:return aelse:return bmax_num = get_max_num(9, 6)
print(max_num)  # 输出:9

2. 多个返回值(实际返回元组)

def get_num_info(num):square = num * numcube = num * num * numreturn square, cube  # 逗号分隔,返回元组s, c = get_num_info(3)  # 解包接收
print(s, c)  # 输出:9 27

3. 无返回值(默认返回None)

def print_warning():print("警告:参数格式错误!")result = print_warning()
print(result)  # 输出:None

五、函数基础常见错误与解决

错误现象 根本原因 解决方法
TypeError: 'int' object is not callable 函数名与变量名重名(如定义了sum=10,又调用sum()) 修改变量名,避免与函数名/内置函数重名
IndentationError 函数体未缩进或缩进不一致 统一用4个空格缩进,函数体必须在def下缩进
UnboundLocalError 函数内修改全局变量未声明global 修改全局变量前加global 变量名(如global count
参数传值顺序混乱 混合位置参数和关键字参数时顺序错 关键字参数必须放在位置参数后面(如func(1, 2, c=3)

六、函数基础实战案例:封装实用小功能

案例1:判断是否为闰年

def is_leap_year(year):"""判断年份是否为闰年"""if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):return Trueelse:return Falseprint(is_leap_year(2024))  # 输出:True
print(is_leap_year(2025))  # 输出:False

案例2:计算列表平均值

def calculate_average(num_list):"""计算列表中数字的平均值"""if not num_list:  # 处理空列表return 0total = sum(num_list)average = total / len(num_list)return round(average, 2)  # 保留2位小数nums = [10, 20, 30, 40]
print(calculate_average(nums))  # 输出:25.0
print(calculate_average([]))  # 输出:0

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

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

相关文章

索引数组读取修改添加

索引数组读取修改添加1 $xm = array(小明,男,28,5888.88);2 3 //1.读取数据 4 echo $xm[0].同学的工资是:.$xm[3].元人民币。;5 6 //2.修改数据 7 $xm[0] = 小张;8 $xm[1]…

12.08

今天上午统一建模语言上机数构上课,下午Java

zsj_蓝桥python系列二_Python 基础语法 _Python 列表推导式

zsj_蓝桥python系列二_Python 基础语法 _Python 列表推导式Python 基础语法 Python 列表推导式 你有没有写过这样的代码?想生成一个新列表,得先建空列表、再写 for 循环、最后用append()加元素 —— 又长又麻烦。今天…

白带异常用药推荐:科学应对妇科炎症的健康指南

白带是女性生殖系统健康的“晴雨表”,正常情况下呈透明或白色糊状、无异味。当白带出现颜色异常(如黄绿色、灰色)、性状改变(如豆腐渣样、泡沫状)或伴随瘙痒、异味时,可能提示阴道炎、宫颈炎等妇科炎症。世界卫生…

获取数组长度即最大下标

获取数组长度即最大下标$xm = array(小明,男,28,5888.88);//count()函数用于返回数组长度(元素的个数),int(整型)$x = count($xm);echo $x;echo "<br>";var_dump($x);//3.使用数组长度添加数据$xm[c…

第49天

今天学习的java

JAVA学习笔记-DAY3

引用类型 VS 指针在Java中,引用类型的变量非常类似于C/C++的指针。 引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不…

北京婚姻家庭法律事务所服务观察:专业机构业务能力解析

在社会关系日益复杂化的当下,婚姻家庭领域的法律需求呈现多样化趋势,涵盖离婚纠纷、财产划分、子女抚育、遗产继承等多个维度。专业的婚姻家庭法律事务所凭借其对细分领域的深耕,为当事人提供法律支持与权益保障,成…

火小兔的两种交互方式与全部命令 - Magic

使用本平台开发脚本 从微软官方渠道安装完毕后,可以从开始菜单中搜索到“机关区”和“火小兔”。机关区——调试窗口(演示):直接双击“机关区”,进入界面之后就可以直接编写,调试,编辑,浏览,运行本平台命令;…

123_尚硅谷_匿名函数

123_尚硅谷_匿名函数1.匿名函数使用方式1:在定义匿名函数时就直接调用 2.匿名函数使用方式2:将匿名函数赋给一个变量,再通过该变量调用匿名函数 3.全局匿名函数

推荐几个模切机品牌:国内实力厂商推荐

模切机作为印后加工和精密制造领域的关键设备,广泛应用于印刷、包装、电子、图文处理等行业,其性能直接影响产品的加工精度、生产效率及成品质量。在各行业对加工工艺要求不断提升的背景下,选择技术成熟、品质可靠的…

白带异常用药品牌排行榜:科学守护女性生殖健康

白带是女性生殖系统健康的“晴雨表”,正常情况下呈无色透明或乳白色糊状,无异味。当出现颜色、质地、气味异常(如黄绿色、豆腐渣样、鱼腥味等)时,可能提示阴道炎症、宫颈病变或盆腔感染等问题。及时识别症状并采取…

洛谷 P3959

NOIP 2017 提高组给定 \(n\) 个点,\(m\) 条边的无向连通图。要选出一棵有根生成树,设 \(u\) 与 \(fa_u\) 之间的边长度为 \(l_u\),总代价为 \(\sum l_u \cdot dis(u, root)\),求最小总代价是多少? \(n \le 12, m …

西城区离婚律师事务所推荐:专注婚姻家事法律服务机构

在处理婚姻家事相关事务时,选择专业的法律服务机构是保障自身权益的重要环节。西城区作为北京核心区域,汇聚了多家在婚姻家事领域具备丰富经验的律师事务所,为有需求的人士提供专业支持。一、推荐榜单推荐 1:北京安…

治疗白带异常品牌哪家好?女性健康护理品牌解析

白带异常是女性生殖系统健康的常见信号,可能由感染、激素变化或局部卫生习惯等多种因素引起。科学认识白带异常的成因与护理方式,选择专业可靠的健康管理方案,对维护女性私密健康至关重要。一、白带异常的科学认知与…

工厂电动扫地车品牌推荐:行业热门选择解析

在工业生产环境中,工厂车间、仓库等场所的地面清洁工作往往面临面积大、粉尘多、杂物复杂等挑战。电动扫地车作为高效的清洁设备,通过机械化作业不仅能显著提升清洁效率,减少人工成本,还能有效改善车间环境,为安全…

北京婚姻法律师事务所排名及综合实力解析

在社会经济发展与家庭结构变化的背景下,婚姻家事法律需求日益增长,北京地区涌现出众多专注于婚姻法律服务的律师事务所。选择一家专业、经验丰富的机构,对于妥善处理婚姻纠纷、维护个人合法权益具有重要意义。以下结…

12月8号

今天进行了统一建模的学习和数据结构的学习。 然后进行了java的学习。