`

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中文版

    - **1.6 Debian GNU/Linux上的Python**:介绍了在Debian GNU/Linux系统中安装Python的方式。 - **1.7 从源代码安装Python**:适合高级用户,讲解如何从源码编译并安装Python。 - **1.8 使用Python的交互Shell**:...

    python二级选择什么书-自学Python可以选择哪些入门书籍?.pdf

    4. **Learning Python** - 《Python学习手册(套装上下册)(原书第5版)》 马特·祖瑞克的经典之作,全面覆盖Python语言的各个方面,适合深入学习。 5. **Python Cookbook** - 《Python Cookbook(第3版)中⽂版》 ...

    Python版的A*寻路算法

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

    python3.4.0API文档.chm 英文

    Python 3.4.0 API 文档是 Python 开发者不可或缺的重要参考资料,它详细地介绍了 Python 3.4 版本的各种内置函数、模块、类和接口。这个文档以 CHM(Compiled HTML Help)格式提供,是 Microsoft 开发的一种帮助文件...

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

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

    python实现*的形状(沙漏*)

    python实现*的形状(沙漏*)

    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入门教程(非常详细),从零基础入门到精通,看完这一篇就够了.pdf

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

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

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

    python学习资料和课件,python教学课件,Python

    1. **安装Python**: 首先,你需要了解如何在Windows、Mac或Linux系统上下载和安装Python解释器,包括选择版本(如Python 3.x)和配置环境变量。 2. **Python交互式环境**: 介绍IDLE,Python的默认集成开发环境,...

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

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

    Python基础教程(全60课)

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

    Python安装文件 Python 3.8

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

    centos离线安装python环境依赖

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

    Python 3.9软件安装包

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

Global site tag (gtag.js) - Google Analytics