大家好,欢迎来到IT知识分享网。
键值参数是 Python 的一个特性,对于从其他编程语言转到 Python 的人来说,不免看起来有些奇怪。人们在学习 Python 的时候,经常要花很长时间才能理解键值参数的各种特性。
在 Python 教学中,我经常希望我能三言两语就把键值参数丰富的相关特性讲清楚。但愿这篇文章能够达到这个效果。
在这篇文章中我会解释键值参数是什么和为什么要用到它。随后我会细数一些更为深入的使用技巧,就算老 Python 程序员也可能会忽略,因为 Python 3 的最近一些版本变动了许多东西。如果你已经是一个资深的 Python 程序员,你可以直接跳到结尾。
先看看下面这个 Python 函数:
from math import sqrt
我们可以像这样以占位参数的形式传值:
如果我们使用帮助函数,Python 会把三个参数的名字告诉我们:
看看这段代码:
下面这段代码做了相同的事,只是用键值参数代替了占位参数:
我们在这里去掉了一个参数。第一个参数代表 filename,并且有一个 None 的默认值。这里我们不需要 filename,因为我们应该只传一个文件对象或者只传一个文件名给 GzipFile,而不是两者都传。
我们还能再去掉一个参数。
还是原来的代码,不过这次压缩率被去掉了,以默认的 9 代替:
当我们使用键值参数时:
Python 有一些接收无限量的占位参数的函数。这些函数有时可以接收用来定制功能的参数。这些参数必须使用具名参数,与无限量的占位参数区分开来。
内置的 print 函数的可选属性 sep、end、file 和 flush,只能接收键值参数:
在 Python 2 中,sorted 函数可以以占位或键值的方式接收参数:
这儿有个例子:
上面这个函数中的 initial 参数必须以键值形式指定:
如果你想接收一个键值参数,并且不打算接收任何 * 占位参数,你可以在 * 后面不带任何字符。
比如这儿有一个修改过的 Django 的 django.shortcuts.render 函数:
这样调用函数的意图:
举个例子,字符串格式化方法接收你传递给它的任意键值参数:
Python 允许函数匹配任意输入的键值参数,通过在定义函数的时候使用 操作符:
这是我们的函数的使用示例:
format_attributes(name="Trey", website="http://treyhunner.com", color="purple") 'name: Trey, website: http://treyhunner.com, color: purple'
这就意味着你可以基于字典中的项向函数传递键值参数。
这里我们从一个字典中手动提取键/值对,并把它们以键值参数的形式传入函数中:
我们可以通过 操作符将字典中的项拆解成函数调用时的键值参数,来向函数传递通配键值参数:
所以在 Python 3.6 之后,你将不会再看到这样的情况:
定义一个新的函数时,不要再考虑哪个参数应该被指定为键值参数了。使用 * 操作符把这些参数都指定成键值参数。
牢记你可以使用 操作符来接受和传递通配键值参数。
重要的对象应该要有名字,你可以使用键值参数来给你的对象赋名!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/129422.html