Python 函数参数
参数
信息可以作为参数传递给函数。
参数在函数名之后,用括号括起来。您可以添加任意数量的参数,只需用逗号分隔即可。
以下示例包含一个带有一个参数 (fname) 的函数。调用该函数时,我们传递一个名字,该名字在函数内部用于打印全名:
实例
一个带一个参数的函数:
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
亲自试一试 »
形参与实参
术语"形参"和"实参"可以指同一件事:传递给函数的信息。
从函数的角度来看:
形参是指函数定义中括号内列出的变量。
实参是指函数被调用时实际传递给函数的值。
实例
def my_function(name): # name is a parameter
print("Hello", name)
my_function("Emil") # "Emil" is an argument
参数数量
默认情况下,函数调用时必须传入正确数量的参数。
如果你的函数需要 2 个参数,那么你必须传入 2 个参数。
实例
此函数需要 2 个参数,并传入 2 个参数::
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil", "Refsnes")
亲自试一试 »
如果您尝试使用错误数量的参数调用该函数,将会收到错误:
实例
此函数需要 2 个参数,但只收到 1 个:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil")
亲自试一试 »
默认参数值
您可以为参数指定默认值。如果函数在调用时未传递参数,则使用默认值:
实例
def my_function(name = "friend"):
print("Hello", name)
my_function("Emil")
my_function("Tobias")
my_function()
my_function("Linus")
亲自试一试 »
实例
country 参数的默认值:
def my_function(country = "Norway"):
print("I am from", country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
亲自试一试 »
关键字参数
您可以使用 key = value 语法发送参数。
实例
def my_function(animal, name):
print("I have a", animal)
print("My", animal + "'s name is", name)
my_function(animal = "dog", name = "Buddy")
亲自试一试 »
这样一来,使用关键字参数时,参数的顺序就无关紧要了。
实例
def my_function(animal, name):
print("I have a", animal)
print("My", animal + "'s name is", name)
my_function(name = "Buddy", animal = "dog")
亲自试一试 »
在 Python 文档中,关键字参数 通常缩写为 kwargs。
位置参数
当您在不使用关键字参数的情况下调用函数时,这些参数被称为位置参数。
位置参数必须按正确的顺序排列:
实例
def my_function(animal, name):
print("I have a", animal)
print("My", animal + "'s name is", name)
my_function("dog", "Buddy")
亲自试一试 »
位置参数的顺序很重要:
实例
改变顺序会改变结果:
def my_function(animal, name):
print("I have a", animal)
print("My", animal + "'s name is", name)
my_function("Buddy", "dog")
亲自试一试 »
混合使用位置参数和关键字参数
您可以在函数调用中混合使用位置参数和关键字参数。
但是,位置参数必须位于关键字参数之前。
实例
def my_function(animal, name, age):
print("I have a", age, "year old", animal, "named", name)
my_function("dog", name = "Buddy", age = 5)
亲自试一试 »
传递不同数据类型
您可以将任何数据类型作为参数传递给函数(字符串、数字、列表、字典等)。
函数内部将保留数据类型。
实例
将列表作为参数传递:
def my_function(fruits):
for fruit in fruits:
print(fruit)
my_fruits = ["apple", "banana", "cherry"]
my_function(my_fruits)
亲自试一试 »
实例
将字典作为参数传递:
def my_function(person):
print("Name:", person["name"])
print("Age:", person["age"])
my_person = {"name": "Emil", "age": 25}
my_function(my_person)
亲自试一试 »
返回值
函数可以使用 return 语句返回值:
返回不同的数据类型
函数可以返回任何数据类型,包括列表、元组、字典等等。
实例
一个返回列表的函数:
def my_function():
return ["apple", "banana", "cherry"]
fruits = my_function()
print(fruits[0])
print(fruits[1])
print(fruits[2])
亲自试一试 »
实例
返回元组的函数:
def my_function():
return (10, 20)
x, y = my_function()
print("x:", x)
print("y:", y)
亲自试一试 »
仅限位置参数
您可以指定一个函数只能有位置参数。
要指定仅限位置参数,请在参数后添加 , /:
如果没有 , /,即使函数需要位置参数,实际上也可以使用关键字参数:
使用 , / 时,如果尝试使用关键字参数,将会报错:
仅限关键字参数
要指定函数只能使用关键字参数,请在参数前添加 *, :
如果没有*,,即使函数需要关键字参数,您也可以使用位置参数:
使用*,时,如果尝试使用位置参数,将会报错:
结合使用位置参数和关键字参数
您可以在同一个函数中结合使用这两种参数类型。
位于 / 之前的参数仅支持位置,位于 * 之后的参数仅支持关键字。
实例
def my_function(a, b, /, *, c, d):
return a + b + c + d
result = my_function(5, 10, c = 15, d = 20)
print(result)
亲自试一试 »

