| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> python知识:*args 和**kwargs -> 正文阅读 |
|
[Python知识库]python知识:*args 和**kwargs |
1. *args 和 **kwargs ????????多数新的 Python 程序员都很难弄清楚 *args 和 **kwargs 魔术变量。那么它们是什么?首先让我告诉你,没有必要写 *args 或 **kwargs。只有 *(星号)是必需的。您也可以编写 *var 和 **vars。编写 *args 和 **kwargs 只是一种约定。所以现在让我们先看看 *args。 2? 应用 *args参数 ????????*args 和 **kwargs 主要用于函数定义。 *args 和 **kwargs 允许您将可变数量的参数传递给函数。变量在这里的含义是您事先不知道用户可以将多少个参数传递给您的函数,因此在这种情况下您使用这两个关键字。 *args 用于向函数发送非关键字可变长度参数列表。这是一个示例,可帮助您获得清晰的概念: def?test_var_args(f_arg, *argv): ????print("first normal arg:", f_arg) ????for?arg in?argv: ????????print("another arg through *argv:", arg) test_var_args('yasoob', 'python', 'eggs', 'test') 这会产生以下结果: first normal arg: yasoob another arg through *argv: python another arg through *argv: eggs another arg through *argv: test 我希望这可以消除您的任何困惑。所以现在让我们谈谈 **kwargs 3 用 **kwargs参数 ????????**kwargs 允许您将关键字可变长度的参数传递给函数。如果你想在函数中处理命名参数,你应该使用 **kwargs。这是一个让您继续使用它的示例: def?greet_me(**kwargs): ????for?key, value in?kwargs.items(): ????????print("{0}?= {1}".format(key, value)) >>>?greet_me(name="yasoob") name =?yasoob ????????因此,您可以看到我们如何在函数中处理关键字参数列表。这只是 **kwargs 的基础知识,您可以看到它有多么有用。现在让我们谈谈如何使用 *args 和 **kwargs 调用带有参数列表或字典的函数。 4 用 *args 和 **kwargs 做函数形参 ????????所以在这里我们将看到如何使用 *args 和 **kwargs 调用函数。只要考虑你有这个小功能: def?test_args_kwargs(arg1, arg2, arg3): ????print("arg1:", arg1) ????print("arg2:", arg2) ????print("arg3:", arg3) ????????现在您可以使用 *args 或 **kwargs 将参数传递给这个小函数。这是如何做到的: # first with *args >>>?args =?("two", 3, 5) >>>?test_args_kwargs(*args) arg1: two arg2: 3 arg3: 5 # now with **kwargs: >>>?kwargs =?{"arg3": 3, "arg2": "two", "arg1": 5} >>>?test_args_kwargs(**kwargs) arg1: 5 arg2: two arg3: 3 5 使用 *args **kwargs 和正式 args 的顺序所以如果你想在函数中使用所有这三个,那么顺序是 some_func(fargs, *args, **kwargs) 6 应用时机????????这真的取决于你的要求是什么。最常见的用例是制作函数装饰器(在另一章中讨论)。此外,它也可以用于猴子修补。猴子补丁意味着在运行时修改一些代码。假设您有一个带有名为 get_info 的函数的类,该函数调用 API 并返回响应数据。如果我们想测试它,我们可以用一些测试数据替换 API 调用。例如: import?someclass def?get_info(self, *args): ????return?"Test data" someclass.get_info =?get_info 我相信您也可以想到其他一些用例。 猴子补丁:是程序在本地扩展或修改支持系统软件的一种方式(仅影响程序的运行实例),可以理解为动态补丁。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 2:30:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |