12.1 创建函数与调用
在 Python 中,函数是使用def 关键字定义的:
def my_function():
print("Hello from a function")
调用函数
要调用函数,请使用函数名称后跟括号:
def my_function():
print("hg菜鸟")
my_function()
12.2 参数
信息可以作为参数传递给函数。参数在函数名后的括号内指定。您可以根据需要添加任意数量的参数,只需用逗号分隔它们。
下面的示例有一个带一个参数 (fname) 的函数。当函数被调用时,我们传递一个名字,在函数内部使用它来打印全名:
def my_function(fname):
print(fname + " 菜鸟")
my_function("hg")
my_function("hg吗")
my_function("憨批")
12.3 参数数量
默认情况下,必须使用正确数量的参数调用函数。这意味着如果您的函数需要 2 个参数,则必须使用 2 个参数调用该函数,不能多也不能少。
例如此函数需要 2 个参数,并获得 2 个参数:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("hg", "菜鸟")
12.4 任意参数,*args
如果您不知道将传递给函数的参数有多少,请*在函数定义中的参数名称前添加一个。这样,该函数将接收一个参数元组,并可以相应地访问这些项目。
如果参数数量未知,则*在参数名称前添加一个:
def my_function(*kids):
print("hg帅哥 " + kids[2])
my_function("名字", "性别", "菜鸟")
12.5 关键字参数
还可以使用key = value语法发送参数。这样,参数的顺序就无关紧要了。
def my_function(child3, child2, child1):
print("最帅的是 " + child3)
my_function(child1 = "大白", child2 = "小白", child3 = "猪猪侠")
短语关键字参数在 Python 文档中通常缩写为kwargs。
12.6 任意关键字参数,**kwargs
如果您不知道有多少关键字参数将被传递到您的函数中,请**在函数定义中的参数名称之前添加两个星号。这样,该函数将接收一个参数字典,并可以相应地访问这些项目.
例如:
def my_function(**kid):
print("它的名字是 " + kid["lname"])
my_function(fname = "菜鸟", lname = "hg")
12.7 默认参数值
如果我们不带参数调用函数,它使用默认值:
def my_function(country = "Norway"):
print("I am from " + country)
my_function()
my_function("Brazil")
12.8 将列表作为参数传递
例如,如果你发送一个 List 作为参数,当它到达函数时它仍然是一个 List:
def my_function(food):
for x in food:
print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)
12.9 返回值
要让函数返回值,请使用以下return 语句:
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))
12.10 pass语句
function定义不能为空,但如果您出于某种原因有一个function没有内容的定义,请放入pass语句中以避免出错。
def myfunction():
pass
12.11 lambda匿名函数
(1)lambda 函数是一个小的匿名函数。一个 lambda 函数可以接受任意数量的参数,但只能有一个表达式。
语法:
lambda arguments : expression
执行表达式并返回结果:
示例将 10 添加到 argument a,并返回结果:
x = lambda a : a + 10
print(x(5))
(2)Lambda 函数可以接受任意数量的参数。
例将参数a与参数b相乘并返回结果:
x = lambda a, b : a * b
print(x(5, 6))
把参数a、 b和c并返回结果:
x = lambda a, b, c : a + b + c
print(x(5, 6, 2))
(3)假设您有一个接受一个参数的函数定义,并且该参数将乘以一个未知数:
def myfunc(n):
return lambda a : a * n
使用该函数定义来创建一个函数,该函数始终将您发送的数字加倍:
def myfunc(n):
return lambda a : a * n
mydoubler = myfunc(2)
print(mydoubler(11))
使用相同的函数定义来创建一个始终将您发送的数字增加三倍的函数:
def myfunc(n):
return lambda a : a * n
mytripler = myfunc(3)
print(mytripler(11))