一个简单的例子让你明白,在Python中如何向函数传递列表

把列表传递给函数后, 函数就能直接访问列表中的内容咯。

假设有一组专家,我们想邀请他们参加研讨会。

def send_invitation(experts):
 '''发送邀请函'''
 for expert in experts:
 print(expert + ',您好,现邀请您参加 XX 研讨会...')
experts = ['袁孝楠', '黄莉莉']
send_invitation(experts)

运行结果:

袁孝楠,您好,现邀请您参加 XX 研讨会...
黄莉莉,您好,现邀请您参加 XX 研讨会...
修改列表

列表参数传递给函数后, 函数就可以对其进行修改。注意: 在函数中对列表所进行的任何修改都是永久性的。

def send_invitation(experts, informed):
 '''发送邀请函,并移动列表数据到【已通知】列表'''
 while experts:
 expert = experts.pop()
 print(expert + ',您好,现邀请您参加 XX 研讨会...')
 informed.append(expert)
experts = ['袁孝楠', '黄莉莉'] # 专家列表
informed = [] # 已通知人员列表
print('执行前:experts=' + str(experts) + ',informed=' + str(informed))
send_invitation(experts, informed)
print('执行后:experts=' + str(experts) + ',informed=' + str(informed))

运行结果:

执行前:

experts=['袁孝楠', '黄莉莉'],informed=[]
黄莉莉,您好,现邀请您参加 XX 研讨会...
袁孝楠,您好,现邀请您参加 XX 研讨会...

执行后:

experts=[],informed=['黄莉莉', '袁孝楠']

即使没有注释,那些具有描述性的函数名也能清晰地表达出函数所做的工作。 我们也可以在一个函数中调用另一个函数, 这样有助于将复杂的任务分解为一系列的步骤,让程序变得更具可读性。

只读列表

有时候,我们并不想让函数修改传递进去的列表,这时我们可以向函数传递列表的副本:

experts = ['袁孝楠', '黄莉莉'] # 专家列表
informed = [] # 已通知人员列表
print('执行前:experts=' + str(experts) + ',informed=' + str(informed))
send_invitation(experts[:], informed)
print('执行后:experts=' + str(experts) + ',informed=' + str(informed))

运行结果:

执行前:

experts=['袁孝楠', '黄莉莉'],informed=[]
黄莉莉,您好,现邀请您参加 XX 研讨会...
袁孝楠,您好,现邀请您参加 XX 研讨会...

执行后:

experts=['袁孝楠', '黄莉莉'],informed=['黄莉莉', '袁孝楠']

虽然向函数传递列表的副本可以保留原始列表的内容, 但除非有充分的理由需要这样做。

因为让函数使用传递进行的列表可以避免花时间在内存中创建副本,从而提高性能, 这在处理大数据列表时尤其需要注意。

文源网络,仅供学习之用,侵删。

在学习Python的道路上肯定会遇见困难,别慌,我这里有一套学习资料,包含40+本电子书,800+个教学视频,涉及Python基础、爬虫、框架、数据分析、机器学习等,不怕你学不会! https://shimo.im/docs/JWCghr8prjCVCxxK/ 《Python学习资料》

关注公众号【Python圈子】,优质文章每日送达。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值