python入门之函数任意个参数传递返回值函数模块化方法及Python3.9发布[图]

一、python入门:函数任意个参数传递、返回值,函数模块化方法
本节继续介绍函数的一些特性,包括返回值,任意个参数传递,列表作为函数参数等。
一、函数的返回值
函数的一个很重要的功能是有返回值,函数使用return语句将结果返回给主函数。
1、返回简单值
我们对上一篇的例子稍加改造,将结果用return语句返回给变量fbook,在主函数中才打印出结果。
deffavorite_book(btype,book,page='900'):"""输出我最喜欢的书"""return('这是一本'+btype+'类的书'+'书名叫:'+book+'共有'+page+'页')fbook=favorite_book('哲学','易经')print(fbook)

python入门之函数任意个参数传递返回值函数模块化方法及Python3.9发布[图]

2、返回字典
我们可以在函数内部构造一个字典,然后作为返回值返回,请看代码:
deffavorite_book(btype,book,page='900'):"""输出我最喜欢的书"""fbook={'类别':btype,'书名':book,'页数':page}returnfbookfbook=favorite_book('哲学','易经')print(fbook)fork,vinfbook.items():print(k,v)
函数可以返回任意类型的数据,大家可以自己尝试。
二、传递列表给函数
使用列表处理数据会很方便和高效,下面我们对第八课中的字符串和数字分离代码稍加改造,用函数来表示,请看代码:
defspeList(Alist,str_list,num_list):whileAlist:ifisinstance(Alist[-1],int):#[-1]是指最后一个列表元素num_list.append(Alist.pop())#弹出最后一个元素,存入num_list中ifisinstance(Alist[-1],str):str_list.append(Alist.pop())#弹出最后一个元素,存入str_list中Alist=['a',2,'dd',15,78,22,'ff','kk']str_list=[]#用来存储字符串num_list=[]#用来存储数字speList(Alist,str_list,num_list)print(str_list)#打印字符列表print(num_list)#打印数字列表print(Alist)
除了多一行函数定义和执行函数外,我们并没有额外写代码了。要注意最后一条Print的执行结果,说明函数对列表的操作是永久改变的,Alist执行后变成了空列表,因为里面的元素在函数中都被移除列表了。
如果不想让函数修改列表,可以复制一份列表,还记得复制列表用操作符“[:]”吗?见下面的执行结果,红色框中是改变的部分:
三、使用任意数量的参数
函数还可以定义成使用任意数量的参数,这样当预先不知道有多少参数的时候就很有用。比如制作不同面条需要的配料不同,但是都可以用同一个函数来处理,请看代码:
defmakenoodles(*toppings):'''打印制作面条的配料'''returntoppings;print('您的番茄鸡蛋面配料有:',makenoodles('番茄','鸡蛋'))print('您的炸酱面配料有:',makenoodles('肉丝','葱','香菇','香油'))
*toppings中的星号让Python创建一个名为toppings的空元组,并将收到的所有值都封装到这个元组中。主意,元组的元素是不可修改的。

我们也可以将位置实参和任意数量参数结合起来用,比如增加一个表示分量的变量,打印面条的时候能同时说明面条的分量。如果将上面例子中的*toppings改成两个星号开头,则会传递给函数一个字典,读书笔记(https://www.yuananren.com)这时传递给函数的参数形式是以“键=值”的形式的,这种形式很直观,能帮助我们传递更多的信息。


defmakenoodles(size,**toppings):'''打印制作面条的配料'''print('这份面条的分量是'+size+'量')returntoppings;cailiao=makenoodles('4',zhuliaos=['番茄','鸡蛋'],peiliaos=['油','盐','糖'])print(cailiao,'\n')print('主料有:',end='')forzhuliaoincailiao['zhuliaos']:print(zhuliao+',',end='')print('\n配料有:',end='')forpeiliaoincailiao['peiliaos']:print(peiliao+',',end='')
上面代码比较复制一点,我们是先把字典打印出来,然后再去字典中将主料和配料打印出来,大家仔细体会。
四、函数的模块化
在这之前,我们都是在同一个文件里面编写代码。
我们可以将函数与主程序分别存储在不同的文件,主程序使用函数的时候需要导入函数模块,这样的好处有几个:函数模块可以分享给其他人使用,隐藏细节,更专注于高层逻辑的编写。
我们在同一个目录下,新建了一个mknoodles.py的文件,并将函数的定义放在这个文件里面,hello.py是我们的主程序。
主程序的代码没有多大变化,增加了一个importmknoodles,函数调用时增加了一个前缀,变成:mknoodles.makenoodles而已,执行的结果和上例一模一样。
如果不想在调用函数的时候增加前缀,我们需要指定一下导入的函数名,见下面:
还可以给模块或者函数指定别名,下面是给函数makenoodles指定了一个别名叫pp,调用的时候就直接使用pp()。大家可以自己试一下给模块mknoodles指定别名。指定别名是为了避免与主程序中的函数命名相同。
还可以使用frommknoodlesimport*这种形式导入所有的函数,但一般不推荐这种方法,会导致各种命名冲突。
最后说一个小细节,函数名要清晰易懂,在函数体中要有注释,说明这个函数是干什么的,方便后续维护。因为再过几个月,可能连你自己都忘了这个函数是干什么了。
二、Python3.9.1rc1发布:从3.9.0开始已经做了240项改动
近期,Python3.9的第一个维护版本候选版本发布。
IT之家获悉,Python3.9.1rc1是Python编程语言最新的主要版本,它包含了许多新特性和优化。从3.9.0开始,已经做了240项改动,这是一个很大的数量。相比之下,3.8.1rc1自3.8.0以来只有168次提交。
Python3.9.1rc1是第一个支持macOS11BigSur的Python版本。通过Xcode11及以后的版本,现在可以构建在AppleSilicon(M1芯片等)上工作的“Universal2”二进制文件。其提供了这样一个安装程序作为macosx11.0变体。这个安装程序可以部署到旧版本,测试到OSX10.9。由于正在等待pip的更新版本,目前请将macosx11.0安装程序视为实验性版本。
这是第一个在Windows上默认使用64位安装程序的Python版本。安装程序现在也主动禁止在Windows7上安装。Python3.9与不支持的Windows版本不兼容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值