2、函数
2.1、函数传递列表
将列表传递给函数后,函数就能直接访问其内容。
下列为一个实例:将一个名字列表传递给一个名为greet_users()的函数,这个函数将会向列表中的每一个元素执行相应的信息。
def greet_users(name):for name in names:msg=f"Helo,{name.title()}!"print(msg)
names=['hannah','ty','margot']
greet_users(names)
我们将 greet_users()定义成接受一个名字的列表,并将其赋给形参names。这个函数遍历收到的列表,并对其中的每个元素打印一条信息。
2.1.1、在函数中修改列表
将列表传递给函数后,函数就可以对其进行修改了。在函数中对这个列表所做的任何修改都是永久的。
2.1.2、禁止函数修改列表
既要打印出执行操作后的列表,又要打印出原来的原始列表。为了解决这一问题,可向函数传递列表的副本而不是原来的列表。这样,函数所做的任何操作就都影响副本,而丝毫不影响原始列表。要将例表的副本传递给函数可以使用切片表示法[:]。
2.2、传递任意数量的实参
有时不知函数需要接受多少个实参,好在Python允许函数从调用语句中收集任意数量的实参。
下面的函数只有一个形参*topp,不管调用语句提供了多少个实参,它都能将其收入囊中:
def pizza(*topp):print(topp)
pizza('pepperoni')
pizza('mush','green peppers','extre')
形参名*topp中的星号让Python创建一个名为topp的元组,该元组包含函数收到的所有值。
注:Python会将实参封装到一个元组中,即便函数值收到一个值也将它为元组看待。所以下面的输出中的(‘pepperoni’,)的后面有一个逗号:
不管函数收到多少个实参,这种语法都管用。