在Python中,定义函数的基本语法是使用def关键字后跟函数名,然后是括号内的参数列表(形参),最后是一个冒号,接下来是缩进的代码块,即函数体。下面是一个简单的例子来讲解如何定义函数以及实参和形参的区别:
|
# 定义一个函数,名为greet,它接受一个形参name |
|
def greet(name): |
|
# 函数体开始,使用缩进来标识 |
|
message = "Hello, " + name + "!" |
|
# 使用print函数打印一条消息 |
|
print(message) |
|
# 函数体结束 |
|
|
|
# 调用函数,传递一个实参'Alice' |
|
greet('Alice') # 输出: Hello, Alice! |
在这个例子中:
· greet 是函数名。
· name 是形参(形式参数),它是函数定义中声明的参数,用于接收传递给函数的值。
· 'Alice' 是实参(实际参数),它是调用函数时传递给函数的实际值。
形参和实参之间的主要区别如下:
1. 定义与位置:
· 形参(形式参数)是函数定义中括号()里的变量,它们代表了函数调用时预期的输入。
· 实参(实际参数)是调用函数时传递给形参的具体值。
2. 存在时间:
· 形参只在函数被调用时存在,函数执行完毕后它们就消失了。
· 实参是函数外部定义的变量或值,它们可以在函数被调用之前、之后或同时存在。
3. 数量与类型:
· 形参的数量和类型由函数定义决定。
· 实参的数量和类型必须与形参匹配(除非使用了默认参数、可变参数等)。
4. 作用:
· 形参用于接收实参的值,并在函数体内使用这些值。
· 实参用于向函数提供必要的信息,以便函数能够执行其任务。
下面是一个带有多个形参和默认形参的函数示例:
|
# 定义一个带有多个形参和默认形参的函数 |
|
def introduce(name, age, country='World'): |
|
# 使用format方法格式化字符串 |
|
message = "My name is {}, I am {} years old, and I come from {}.".format(name, age, country) |
|
print(message) |
|
|
|
# 调用函数,传递所有实参 |
|
introduce('Bob', 30, 'USA') |
|
# 输出: My name is Bob, I am 30 years old, and I come from USA. |
|
|
|
# 调用函数,只传递部分实参,其余使用默认值 |
|
introduce('Alice', 25) |
|
# 输出: My name is Alice, I am 25 years old, and I come from World. |
在这个例子中,introduce 函数有三个形参:name、age 和 country。其中 country 有一个默认值 'World'。在第一个函数调用中,我们传递了三个实参给形参。在第二个函数调用中,我们只传递了两个实参,因此 country 形参使用了其默认值。
注意,当调用函数时,实参必须按照形参的顺序提供,除非使用关键字参数(即参数名=值的形式),这样可以不按照顺序提供实参。例如:
|
introduce(country='Canada', name='Eve', age=28) |
|
# 输出: My name is Eve, I am 28 years old, and I come from Canada. |
在这个调用中,我们使用了关键字参数来指定每个实参对应的形参,这样即使实参的顺序与形参的顺序不同,也能正确地将实参传递给形参。