大家好,欢迎来到IT知识分享网。
1) 函数中的类型提示
我开始学习 Python 时,根本没有使用过类型提示。因此,在编写 Python 的最初几年里,我从未写过一个类型提示。
举个简单的例子,假设我们想写一个函数,求 2 个整数的平均值。我们一般会这么写:
我现在工作时就是这样写函数的(添加类型提示和文档字符串):
- a: int 表示 a 最好是整数
- b: int 表示 b 最好是整数
- -> float 表示函数最好返回一个 float 值
但是,请注意,类型提示是提示,而不是强制。如果我们在 a 和 b 中输入字符串或其他数据类型,Python 其实是可以接受的(直到它尝试将一个字符串除以 2 才会导致错误)。
类型提示的目的主要是:1)使代码便于人类阅读;2)使您的集成开发环境(如 PyCharm 或 VSCode)能够为您进行检查。
尽可能在函数中添加类型提示,以便其他程序员(甚至是未来的你)更容易理解函数。
2) 默认参数
^ 在上述函数中,greeting=’hi’是默认参数。
- 如果我们不向‘greeting’函数传递任何参数时,它就会被自动分配为 “hi”。
- 如果我们向‘greeting’函数传递某个值,它就会接受该值
在 greet(‘tom’) 中,我们没有在问候语中传递任何信息。这意味着它默认为 “hi
在 greet(‘tom’, greeting=’hello’) 中,我们将 “hello “传入了 greeting。也就是说,我们覆盖了默认参数,并指定 greeting = ‘hello’
如果函数中有大量参数,而我们又不希望每次调用函数时都要输入每个参数,那么这种方法就非常有用。
3) 形参和实参
在我学习 Python 的最初几年,我以为它们的意思是一样的。但其实也不尽然,它们之间有一点区别。
比方说,再以之前的例子为例:我们有一个简单的函数,它接收 (a, b) 并返回它们的平均值。
形参是我们定义函数时写在括号内的变量。这里,a 和 b 就是参数。
实参是我们在调用函数时实际传递给函数的值。在这里,当我们调用 avg(a, b) 函数时,3 和 5 就是实参。
4) 位置参数与关键字参数
我们看下面这个函数:
让我们通过传递一些位置参数来调用这个函数。
这里,4 和 7 是位置参数。位置参数需要按顺序排列 — 4 传递到 a,而 7 传递到 b。
接下来,让我们通过传递一些关键字参数来调用我们的函数。
这里,b=5 和 a=8 是关键字参数。关键字参数不需要按顺序排列,但我们必须使用 key=value 格式传递它们。
5) 任意位置参数 (*args)
函数中的任意位置参数(也称为 *args)允许函数接受任意数量的位置参数。
在这里,test 函数接收 *args – 这使得 test 可以接收任意数量的位置参数,所有这些参数都将包含在一个名为 args 的元组中。
我们也可以将其与普通参数相结合(*参数必须排在后面)
补充说明:我们不必一定要将其命名为‘ *args’。只要在前面加上 “*”,我们可以给它起任何名字。
6) 任意关键字参数(kwargs)
任意关键字参数(也称为 kwargs)允许我们的函数接收任意数量的关键字参数。
在这里,test 函数使用了 kwargs–它允许 test 使用任意数量的关键字参数,这些参数将被记录在名为 kwargs 的字典中。
我们还可以将其与普通参数相结合(kwargs 也必须在后面)
补充说明–如果我们不愿意,不必将其命名为‘kwargs’。只要前面有 ,我们可以给它起任何名字。
7) 使用 * 和 将 列表和字典传递给函数
下面是一个简单的函数,它只需打印出参数。
我们可以不按常规方法调用这个函数,即 hi(1,2):
1) 使用 * 传递包含位置参数的列表
在这里,nums 前面的 * 将其内容作为位置参数解包到函数调用中。这与 hi(100, 200) 相同
2) 使用 传递包含关键字参数的字典
在这里,d 前面的 将其键值对作为关键字参数解包到函数调用中。这与 hi(a=100, b=100) 相同
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/108096.html