一、*args和**kwargs
python里的*args和**kwargs的特殊含义,他们都和函数有关,但是在函数调用和函数的声明时有着不同的意义。
一般来说,无论是函数的调用或者声明,单个星号表示有元组(或是列表)的出现,而两个星号则代表有字典出现。
二、函数的调用:
函数调用里的*和**
例如:
def check_web_server(host, port, path) : 用check_web_server('127.0.0.1', 8000, '/admin/')即可调用这个函数。
些信息在三元组里,如:
host_info= ('www.python.org', 80, '/') #http://www.python.org/ 这时候调用就会变成: check_web_server(host_info[0], host_info[1], host_info[2])
1.单星号
这种写法不可扩展,这时候我们可以用单星号来解决这种问题。因为在调用函数时,表达式在计算一个带星号前缀的元组或列表时,会将其打开。
check_web_server(*host_info)
2.双星号
双星号对应的字典的用法也是类似的。现在我们创建一个和('www.python.org', 80, '/')相似内容的字典
host_info= {'host': 'www.python.org', 'port': 80, 'path': '/'}
于是函数的调用就变成了:
check_web_server(**host_info)
它告诉函数在打开字典时,每个键是参数的名字,同时对应的值是函数调用的参数。它就等于:
check_web_server(host='www.python.org', port=80, path='/')
三、函数的声明
函数声明里的*和**
函数声明里的*和**虽然相似但作用不同:它们让Python得以支持变长参数(varargs),即函数可以接受任何数量的参数。
当定义一个有三个参数的函数时(没有默认值的参数),调用的时候必须传入正好三个参数。默认参数虽然引入了一些灵活性,但函数依然受制于所定义参数的最大数目。
如果需要更大的灵活性,我们可以用单星号表示的元组来定义一个变长参数,这个元组包含了所有的元素。现在我们来创建一个这样的“daily sales total”函数
def daily_sales_total(*all_sales) : total = 0.0 for each_sale in all_sales : total += float(each_sale) return total
相应的合法的函数调用有:
daily_sales_total() daily_sales_total(10.00) daily_sales_total(5.00, 1.50, '128.75') #Any type is allowed,not just flosts
不管你向这个函数传递多少参数,他都能够处理。all_sales就是一个包含了所有参数的元组(这就是我们要在函数定义里迭代all_sales的原因)。
你还可以把普通参数和和变长参数混在一起使用,这时候vararg就会捕捉所有剩下的参数,例如现在这个假设的check_web_server函数定义就能接受额外的参数了。
def check_web_server(host, port, path, *args):
注意:在函数定义里要使用变长参数 时,所有必须出现的参数一定先出现,然后是有默认值的参数,最后才是变长参数。
类似的,你也可以在函数声明里用双星号来接受任意数目的关键字参数,它们会在函数被调用时导入到另一个字典中。
def check_web_server(host, port, path, *args, **kwargs):
这个函数必须接受初始的三个参数,但是也能接受随后任何数目的参数或是关键字参数:在函数内部,我们可以分别检查args元组和kwargs字典的内容来决定是否丢弃它们。
相关推荐
python*excel 利用python进行excel操作代码 具体的操作和讲解见本人主页 后续将会持续更新excel,ppt,爬虫,人工智能等相关内容,敬请关注
使用纯python脚本控制pico3000系列示波器,支持win和linux平台(源码),很好的资源! 使用纯python脚本控制pico3000系列示波器,支持win和linux平台(源码),很好的资源! 使用纯python脚本控制pico3000系列示波器...
它结合了Dijkstra算法的全局最优性和Greedy最佳优先搜索的效率,通过引入启发式函数来估计从当前节点到目标节点的最佳路径。在Python环境下实现A*算法,有助于理解其工作原理,并能方便地应用于各种实际问题。 在这...
2. **.embedded Python**:另一种方法是将整个Python解释器和所有依赖项静态链接到C++程序中。这通常涉及编译Python源代码,使其成为C++可执行文件的一部分。这种方式需要更深入的集成工作,但能确保程序的自包含性...
3. **创建安装目录**: 在D盘或其他盘符下创建Python安装目录,例如`D:\Python`,并在该目录下为Python2和Python3分别创建子目录,如`D:\Python\python27`和`D:\Python\python3x`。 #### 安装Python2 1. **安装...
Python是一种高级、通用的编程语言,以其简洁明了的语法和强大的功能而受到广大开发者的喜爱。它的设计哲学强调代码的可读性和简洁的语法,特别是使用空格缩进划分代码块,而非使用大括号或者关键字。Python支持多种...
8. **安装和使用 Python**:涵盖 Python 的下载、安装、配置环境变量、设置虚拟环境等,是新用户了解 Python 环境搭建的基础教程。 9. **发布 Python 模块**:对于希望分享或分发自己代码的开发者,这份文档讲述了...
- **在Mac OS X上安装Python**:通过Homebrew或Python官方网站提供的可执行文件进行安装,确保正确配置PATH环境变量以便在命令行中使用Python。 - **在Windows上安装Python**:可以下载并运行Python的安装程序,...
本文档提供了 Python 编程语言的详细入门教程,从零基础到精通,涵盖了 Python 的各个方面,包括语法、数据类型、函数、模块、面向对象、异常处理、网络编程和并发编程等。 第一章:Python 介绍 * Python 由来和...
在Python编程语言中,扩展和嵌入Python解释器是两个重要的概念,特别是在开发涉及C/C++和其他低级语言与Python交互的应用时。Python3.7.2中文文档提供了关于这两个主题的详细指导,帮助开发者更好地理解和利用Python...
5. **安装和使用Python**:指导用户如何安装和使用Python。 6. **Python 常用指引**:提供Python编程中的常见问题解答和最佳实践。 7. **安装Python模块**:说明如何安装和管理Python模块。 8. **分发Python模块**:...
Python是一种广泛使用的高级编程语言,以其易读性、简洁的语法和强大的功能而闻名。Python 3.8是Python语言的一个重要版本,它包含了多个新特性和改进,旨在提升开发者的效率和代码质量。在Windows操作系统上安装...
- **安装Python**:可以从Python官方网站下载相应版本的安装包,按照向导进行安装。 - **Python环境**:Python自带的集成开发环境IDLE可以方便地编写和运行Python程序,此外还可以使用其他IDE,如Sublime Text,...
5. **配置和编译Python**:运行`./configure`以配置Python,然后使用`make`命令编译源码。这一步会使用前面安装的GCC和GLIBC等工具。 6. **安装Python**:最后,使用`make altinstall`(推荐,以避免覆盖系统默认的...
### Python基础教程知识点总结...以上是对“Python基础教程(全60课)”的主要内容进行了详细的总结和扩展。这套教程覆盖了从环境搭建到高级主题如面向对象编程、正则表达式等内容,非常适合初学者系统地学习Python编程。
6. **使用Python**:现在你已经可以开始使用Python 3.9了,无论是编写脚本、开发应用还是学习编程,都能享受到这一版本带来的新特性和性能提升。 在安装过程中,如果遇到任何问题,可以参考"安装步骤.jpg"中的指南...
Python可以通过JavaScript绑定对象来操作页面,同时页面也可以通过JavaScript调用Python函数,实现数据交换和控制逻辑。 5. **丰富的API**: CEF Python提供了丰富的API,包括处理URL请求、渲染事件、浏览器生命周期...