`

python *和**

js 
阅读更多

一、*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操作代码

    python*excel 利用python进行excel操作代码 具体的操作和讲解见本人主页 后续将会持续更新excel,ppt,爬虫,人工智能等相关内容,敬请关注

    使用纯python脚本控制pico3000系列示波器,支持win和linux平台(源码)

    使用纯python脚本控制pico3000系列示波器,支持win和linux平台(源码),很好的资源! 使用纯python脚本控制pico3000系列示波器,支持win和linux平台(源码),很好的资源! 使用纯python脚本控制pico3000系列示波器...

    Python版的A*寻路算法

    它结合了Dijkstra算法的全局最优性和Greedy最佳优先搜索的效率,通过引入启发式函数来估计从当前节点到目标节点的最佳路径。在Python环境下实现A*算法,有助于理解其工作原理,并能方便地应用于各种实际问题。 在这...

    C++调用python,免安装python环境运行

    2. **.embedded Python**:另一种方法是将整个Python解释器和所有依赖项静态链接到C++程序中。这通常涉及编译Python源代码,使其成为C++可执行文件的一部分。这种方式需要更深入的集成工作,但能确保程序的自包含性...

    win10_python3和Python2共存配置方法

    3. **创建安装目录**: 在D盘或其他盘符下创建Python安装目录,例如`D:\Python`,并在该目录下为Python2和Python3分别创建子目录,如`D:\Python\python27`和`D:\Python\python3x`。 #### 安装Python2 1. **安装...

    Python+中文手册.pdf_python中文手册_Python中文手册_python_

    Python是一种高级、通用的编程语言,以其简洁明了的语法和强大的功能而受到广大开发者的喜爱。它的设计哲学强调代码的可读性和简洁的语法,特别是使用空格缩进划分代码块,而非使用大括号或者关键字。Python支持多种...

    Python3.8.2中文API文档

    8. **安装和使用 Python**:涵盖 Python 的下载、安装、配置环境变量、设置虚拟环境等,是新用户了解 Python 环境搭建的基础教程。 9. **发布 Python 模块**:对于希望分享或分发自己代码的开发者,这份文档讲述了...

    python-guide.pdf

    - **在Mac OS X上安装Python**:通过Homebrew或Python官方网站提供的可执行文件进行安装,确保正确配置PATH环境变量以便在命令行中使用Python。 - **在Windows上安装Python**:可以下载并运行Python的安装程序,...

    python入门教程(非常详细),从零基础入门到精通,看完这一篇就够了.pdf

    本文档提供了 Python 编程语言的详细入门教程,从零基础到精通,涵盖了 Python 的各个方面,包括语法、数据类型、函数、模块、面向对象、异常处理、网络编程和并发编程等。 第一章:Python 介绍 * Python 由来和...

    Python3.7.2中文文档-5.Python扩展和嵌入Python解释器

    在Python编程语言中,扩展和嵌入Python解释器是两个重要的概念,特别是在开发涉及C/C++和其他低级语言与Python交互的应用时。Python3.7.2中文文档提供了关于这两个主题的详细指导,帮助开发者更好地理解和利用Python...

    Python3.11.0官方文档(全)API参考中文PDF完整版最新版本

    5. **安装和使用Python**:指导用户如何安装和使用Python。 6. **Python 常用指引**:提供Python编程中的常见问题解答和最佳实践。 7. **安装Python模块**:说明如何安装和管理Python模块。 8. **分发Python模块**:...

    Python安装文件 Python 3.8

    Python是一种广泛使用的高级编程语言,以其易读性、简洁的语法和强大的功能而闻名。Python 3.8是Python语言的一个重要版本,它包含了多个新特性和改进,旨在提升开发者的效率和代码质量。在Windows操作系统上安装...

    信息技术-八年级上册-初识python完整版.pptx

    - **安装Python**:可以从Python官方网站下载相应版本的安装包,按照向导进行安装。 - **Python环境**:Python自带的集成开发环境IDLE可以方便地编写和运行Python程序,此外还可以使用其他IDE,如Sublime Text,...

    centos离线安装python环境依赖

    5. **配置和编译Python**:运行`./configure`以配置Python,然后使用`make`命令编译源码。这一步会使用前面安装的GCC和GLIBC等工具。 6. **安装Python**:最后,使用`make altinstall`(推荐,以避免覆盖系统默认的...

    Python基础教程(全60课)

    ### Python基础教程知识点总结...以上是对“Python基础教程(全60课)”的主要内容进行了详细的总结和扩展。这套教程覆盖了从环境搭建到高级主题如面向对象编程、正则表达式等内容,非常适合初学者系统地学习Python编程。

    Python 3.9软件安装包

    6. **使用Python**:现在你已经可以开始使用Python 3.9了,无论是编写脚本、开发应用还是学习编程,都能享受到这一版本带来的新特性和性能提升。 在安装过程中,如果遇到任何问题,可以参考"安装步骤.jpg"中的指南...

    Python-CEFPython一个基于HTML5的PythonGUI框架

    Python可以通过JavaScript绑定对象来操作页面,同时页面也可以通过JavaScript调用Python函数,实现数据交换和控制逻辑。 5. **丰富的API**: CEF Python提供了丰富的API,包括处理URL请求、渲染事件、浏览器生命周期...

Global site tag (gtag.js) - Google Analytics