形式参数和实际参数

形式参数:在定义函数时,函数名后面括号中的参数为“形式参数”。

实际参数:在调用一个函数时,函数名后面括号中的参数为“实际参数”,也就是将函数的调用者提供给函数的参数称为实际参数。

实际参数的类型不同,传递参数可分为两种情况,值传递和引用传递。

值传递:当实际参数为不可变对象时,改变形参的值,实际参数不变

引用传递:当实际参数为可变对象时,改变形参的值,实际参数改变

例:

Image [6]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 定义函数
def demo(obj):
print("原值:",obj)
obj+=obj
# 调用函数
print("------值传递------")
mot = "hello world!"
print("函数调用前:",mot) # hello world!
demo(mot) # 不可变对象
print("函数调用后:",mot) # hello world!
print("------引用传递------")
lst = ['你好', '世界']
print("函数调用前:",lst) # ['你好', '世界']
demo(lst) # 可变对象
print("函数调用后:",lst) # ['你好', '世界', '你好', '世界']

位置参数

位置参数也称必备参数,是必须按照正确的顺序传到函数中,即调用时的数量和位置必须和定义时是一样的。

TypeError异常

  • 实际参数的类型与形式参数的类型不一致

    • 实参数量不一致
    • 类型位置与定义不一致

关键字参数

关键字参数是指使用形式参数的名字来确定输入的参数值,位置不必完全一种