【有书共读05】《Python编程》读书笔记07
函数的操作
传递列表
向函数传递列表有时候非常有用,这种列表有可能包含的是名字、数字或更复杂的对象(如字典),将列表传递给函数后,函数就能直接访问其内容
来看一个简单的例子
def greet_users(names):
for name in names:
msg = 'Hello, ' + name.title() + '!'
print(msg)
usernames = ['Wana' , 'Xioali', 'Sandy']
greet_users(usernames) 在函数中修改列表
如果我们将列表的值传入函数中,并期望可以在函数中修改它的值,只需要将列表名称传入函数中即可。
就如同上一个例子(当然刚才的例子并没有列表的值进行更改,但是它是可以更改的!!!)
再来一个例子:
#coding:utf-8
def liking(names):
names.append('Banana')
names.append('Apple')
names.append('Orange')
likes = []
#这时的列表likes是个空列表
liking(likes)
#通过函数对列表进行操作
print(likes)
#likes发生改变:['Banana', 'Apple', 'Orange'] 禁止函数修改列表
但是有些时候,我们需要禁止函数修改列表,这时候只需要向函数中传递列表的副本即可
通过列表的切片表示法来创建副本
(同样是上面的例子,只是把实参稍微改动一下= ̄ω ̄=)
#coding:utf-8
def liking(names):
names.append('Banana')
names.append('Apple')
names.append('Orange')
likes = []
#这时的列表likes是个空列表
liking(likes[:])
'''注意这里我们传入的是一个列表的副本'''
print(likes)
#likes没有发生改变:[] 传递列表的两种方式一定要分清,并且要看情况使用。
传递任意数量的实参
在很多时候,我们预先不知道函数需要接受多少个实参,幸好python支持从调用语句中收集任意数量的实参。
还是先看一个简单的例子
#coding:utf-8
def make_pizza(*toppings):
'''打印顾客点的所有配料'''
print(toppings)
pass
make_pizza('aaaaa')
make_pizza('bbbbb' , 'ccccc' , 'ddddd')
'''输出结果
('aaaaa',)
('bbbbb', 'ccccc', 'ddddd')
''' 我们来看一看这个小程序:
形参名*toppings中的星号让Python创建一个名为toppings的空元组,并且将收到的所有值都封装到这个元组中。
当然,像这样的的任意数量的参数最好是同种类的参数,否则是比较难以处理的。
结合使用位置实参和任意数量实参
如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后
#coding:utf-8
def make_pizza(size , *toppings):
'''概述索要制作的pizza'''
print("\nMaking a " + str(size) + '-inch pizza with the following toppions:')
for topping in toppings:
print("~" + topping)
pass
make_pizza(2,'aaaaa')
make_pizza(4,'bbbbb' , 'ccccc' , 'ddddd') 使用任意数量的关键字形参
有时候,需要接受任意数量的实参,但预想不知道传递给函数的回事什么样的信息。在这种情况下,可将函数编写成能够接受任意数量的键-值对————调用语句提供了多少就接受多少 。
def build_profile(first , last , **user_info):
#创建一个空字典
profile={}
#将前两个关键字存入字典中
profile['first_name'] = first
profile['last_name'] = last
#将任意数量的关键字实参传入字典中
for key, value in user_info.items():
profile[key] = value
#函数返回值是字典
return profile
user_profile = build_profile('alert', 'einstein' , lacation = 'princeton' , field = 'physics')
print(user_profile) 形参**user_info中的两个星号让python创建一个名为user_info的字典,并将接收到的所有形式为名称-值对都封装到这个字典中。我们可以像访问字典一样访问user_info中的键-值对。
#Python#
查看9道真题和解析
