Python def函数的定义、调用与参数传递详解
本文详解Python中def关键字定义函数的基本语法、调用方式及参数传递机制。通过基础示例演示无参函数写法,解析位置参数与默认参数的配合规则,并深入剖析数值型不可变对象与列表等可变对象在传参时的引用差异,帮助开发者规避意外修改原始数据的常见陷阱。
Python def 函数定义与调用基础
第1步:编写与调用基础函数
目的:封装一段可重复调用的独立逻辑块,提升代码复用率。
入口:使用任意代码编辑器新建 .py 后缀的文件。
动作:使用 def 关键字声明函数名称,括号内留空表示不接收外部输入,冒号结束后下一行开始严格保持 4 空格缩进,编写核心执行语句。完成定义后,在主流程中直接键入函数名并加上括号即可完成调用。
重要参数:此阶段无需配置额外参数。
完成状态:保存并运行文件,终端窗口准确输出预设字符串且无 SyntaxError 提示,即代表函数结构与调用链路建立成功。
# 基础函数定义与调用
def hello():
print('hello python!')
# 触发执行
hello()
参数传递机制与默认值设置
第2步:配置位置参数与默认参数
目的:赋予函数处理不同数据规模的能力,支持按需传参或沿用安全阈值。
入口:在原文件末尾继续追加新的函数定义。
动作:在 def 的括号中采用 形参名=初始值 的语法进行声明。调用时,实参会严格按照从左到右的顺序与形参一一对应;若调用方省略了该参数,解释器将自动代入默认值参与运算。
重要参数:a=1, b=100(设定累加区间范围)。
完成状态:分别以全参模式、零参模式和单参模式触发函数,控制台依次返回精确的累加求和结果。
# 含默认值的参数函数
def myadd(a=1, b=100):
result = 0
i = a
while i <= b:
result += i
i += 1
return result
# 传入特定范围
print(myadd(1, 10))
# 完全使用默认阈值
print(myadd())
# a指定50,b沿用默认值100
print(myadd(50))
第3步:验证可变与不可变对象传参行为
目的:理清 Python 独特的“传对象引用”模型,防止基础函数误改外部全局数据。
入口:在同一文件中追加对比测试用例。
动作:准备两类数据源——基础数值型变量(不可变对象)与容器类变量(如列表,属于可变对象)。将它们同时传入同一函数体:对第一个形参重新赋值为普通整型,该操作仅在函数栈帧内生效,不会穿透至外部;对第二个形参调用原地修改方法,外部对应的原始容器将被同步更新。
重要参数:p1(绑定不可变类型)、p2(绑定可变列表)。
完成状态:函数返回后打印外层变量,整数保持原始数值未发生覆盖,而列表已成功追加新字符串成员,证明内存指针共享机制运行正常。
# 检验不同数据类型的传参反馈
def testpara(p1, p2):
p1 = 10 # 重新赋值,仅影响局部作用域
p2.append('hello') # 原地修改,影响外部原始对象
l = [] # 创建空列表
a = 20 # 创建整数
testpara(a, l)
print(a) # 输出 20,外部整数未受影响
for v in l:
print(v) # 输出 hello,列表内容已被修改
以上就是 Python def函数的定义、调用与参数传递详解的详细内容,更多关于Python高级特性优化与底层运行机制的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









