Python 不定长参数 *argc/**kargcs - Python零基础入门教程

目录

  • 一.前言
  • 二.Python 不定长参数 argc/*kargcs 简介
    • 1.函数不定长参数 *args 使用
    • 2.函数不定长参数 **kwargs 使用
    • 3.函数不定长参数*args 和**kwargs 只能放在形参的末尾,顺序不能错.
  • 三.Python 不定长参数 argc/*kargcs 实战
  • 四.Python 不定长参数 argc/*kargcs 总结
  • 五.猜你喜欢

零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门

一.前言

Python 函数的声明和调用 中我们简单的了解了函数的相关使用,然而在函数传递参数的时候,我们埋下了一个坑,关于不定长参数的传递我们还没有讲,今天这篇文章主要就是讲解这个问题。

Python 内置函数 print,这个函数想大家都会用,观察如下代码:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 不定长参数 *argc/**kargcs.py
@Time:2021/3/29 07:37
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""a = 1.0
b = False
c = "python教程 - 猿说编程"
print("a = %g" % (a))
print("a = %g b = %d" % (a,b))
print("a = %g b = %d c = %s" % (a,b,c))'''
输出结果:
a = 1
a = 1 b = 0
a = 1 b = 0 c = python教程 - 猿说编程
'''

问题来了,内置 Python 内置函数 print 到底需要传递几个参数??

二.Python 不定长参数 argc/*kargcs 简介

Python 函数的不定长参数包含 *args 和 **kwargs ,完整实例如下:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 不定长参数 *argc/**kargcs.py
@Time:2021/3/29 07:37
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""def function_print(*args,**kwargs): # 传递不定长参数,即参数个数不固定print(args)print(kwargs)function_print()'''
输出结果:
()
{}
'''

代码分析:由输出结果可以看出来,第一个形参 args 是元组 tuple 类型,第二个形参 *kwargs 是字典 dict 类型.

**1.函数不定长参数** ***args 使用**

a.形参 *args 类型是元组 tuple,外部调用函数时传递的参数不论是整数还是 BOOL 值或者是字符串 string ,实际上传递的都是元组数据;

b.如果函数形参是不定长参数,外部调用函数传递多个参数时,默认按顺序实参匹配形参,剩余的参数全部作为(元组)不定长参数传递;

c.如果没有为函数的不定长参数传递参数,默认为空元组();

示例代码如下:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 不定长参数 *argc/**kargcs.py
@Time:2021/3/29 07:37
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""#普通形参
def function_print1(arg):print("普通形参 : arg=",arg)#不定长形参
def function_print2(*args):print("不定长形参 : args=",args)#普通形参 + 不定长形参
def function_print3(arg,*args):print("普通形参 + 不定长形参 : arg=",arg)print("普通形参 + 不定长形参 : args=",args)function_print1(False)
function_print1("hello world")
print("***"*20)function_print2(False)
function_print2("hello world")
print("***"*20)function_print3(False) # 只为函数传递了一个形参,不定长参数的形参默认为空元组()
function_print3("hello world")
print("***"*20)# 如果函数的形参是不定长参数,当外部调用函数传递多个参数时,默认按顺序匹配形参,剩余的参数全部作为不定长参数传递
function_print3(False,1,23,4,5) 
function_print3("hello world",False,0,True,"python教程")'''
输出结果:
普通形参 : arg= False
普通形参 : arg= hello world
************************************************************
不定长形参 : args= (False,)
不定长形参 : args= ('hello world',)
************************************************************
普通形参 + 不定长形参 : arg= False
普通形参 + 不定长形参 : args= ()
普通形参 + 不定长形参 : arg= hello world
普通形参 + 不定长形参 : args= ()
************************************************************
普通形参 + 不定长形参 : arg= False
普通形参 + 不定长形参 : args= (1, 23, 4, 5)
普通形参 + 不定长形参 : arg= hello world
普通形参 + 不定长形参 : args= (False, 0, True, 'python教程')'''

**2.函数不定长参数** ****kwargs 使用**

**a.形参 **kwargs 类型是字典 dict,函数外部调用函数传递参数时需要使用关键字参数,实参写法:a=1,b=2,c=False,d=”hello”;**

b.如果函数形参是不定长参数,外部调用函数传递多个参数时,默认按顺序实参匹配形参,关键字参数全部作为(字典)不定长参数传递;

c.如果没有为函数的不定长参数传递参数,默认为空字典 {} ;

示例代码如下:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 不定长参数 *argc/**kargcs.py
@Time:2021/3/29 07:37
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""#普通函数
def function_print1(arg):print("普通函数形参 : arg=",arg)#普通函数不定长形参
def function_print2(**kwargs):print("不定长形参 : args=",kwargs)#普通函数形参 + 不定长形参
def function_print3(arg,**kwargs):print("普通函数形参 + 不定长形参 : arg=",arg)print("普通函数形参 + 不定长形参 : args=",kwargs)function_print1(False)
function_print1("hello world")
print("***"*20)function_print2(a=False)
function_print2(c="hello world")
print("***"*20)function_print3(False)
function_print3("hello world")
print("***"*20)function_print3(False,a=1,b=23,h=4,v=5)
function_print3("hello world",y=False,i=0,a=True,j="python教程")'''
输出结果:
普通函数形参 : arg= False
普通函数形参 : arg= hello world
************************************************************
不定长形参 : args= {'a': False}
不定长形参 : args= {'c': 'hello world'}
************************************************************
普通函数形参 + 不定长形参 : arg= False
普通函数形参 + 不定长形参 : args= {}
普通函数形参 + 不定长形参 : arg= hello world
普通函数形参 + 不定长形参 : args= {}
************************************************************
普通函数形参 + 不定长形参 : arg= False
普通函数形参 + 不定长形参 : args= {'a': 1, 'b': 23, 'h': 4, 'v': 5}
普通函数形参 + 不定长形参 : arg= hello world
普通函数形参 + 不定长形参 : args= {'y': False, 'i': 0, 'a': True, 'j': 'python教程'}'''

3.函数不定长参数*args 和**kwargs 只能放在形参的末尾,顺序不能错.

def function_print(arg1,*args,**kwargs): # *args,**kwargs 必须在形参的末尾,顺序不能乱pass

三.Python 不定长参数 argc/*kargcs 实战

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 不定长参数 *argc/**kargcs.py
@Time:2021/3/29 07:37
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""'''
普通函数形参 + 不定长形参:arg1:普通形参arg1:普通形参args:不定长参数-元组kwargs:不定长参数-字典
'''def function_print(arg1,arg2,*args,**kwargs):print(arg1,arg2,args,kwargs)function_print(False,1,b=23,h=4,v=5)
function_print("hello world",False,0,True,j="python教程",a=True)'''
输出结果:
False 1 () {'b': 23, 'h': 4, 'v': 5}
hello world False (0, True) {'j': 'python教程', 'a': True}'''

注意:注意参数的顺序匹配

四.Python 不定长参数 argc/*kargcs 总结

注意函数传参的三种形式:

  • 1.普通传参;
  • 2.缺省参数,如果外部没有为缺省参数传递实参,形参等于默认值;
  • 3.注意不定长参数的拆包,普通实参打包为元组 tuple 类型,关键字参数打包为字典 dict 类型;

五.猜你喜欢

  1. Python 配置环境
  2. Python 变量
  3. Python 运算符
  4. Python 条件判断 if/else
  5. Python while 循环
  6. Python break
  7. Python continue
  8. Python for 循环
  9. Python 字符串
  10. Python 列表 list
  11. Python 元组 tuple
  12. Python 字典 dict
  13. Python 条件推导式
  14. Python 列表推导式
  15. Python 字典推导式

未经允许不得转载:猿说编程 » Python 不定长参数 *argc/**kargcs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈漏洞及其分类

浅谈漏洞及其分类 一、漏洞概念 漏洞是指一个系统上硬件、软件、协议等具体实现或系统安全策略上存在的弱点或缺陷,系统对特定威胁攻击或危险事件的敏感性,或进行攻击的威胁作用的可能性。这些缺陷、错误或不合理之处可能被有意或无意地利用&#xff0…

外卖小哥是怎样炼成的?

图片来源:网络作者小鹏/陈万成/阮田来源城市数据团原创作品,如有转载,请联系公众号授权。在中国,外卖用户规模已达3.6亿,日均订单量上千万。为了服务这些嗷嗷待哺的食客,有超过百万数量的外卖骑手奔波在全国…

android studio中断,Android Studio是否有任何修复方法可以在Macbook Pro中断开测试设备的连接?...

我也一直面临同样的问题.在一些挖掘中,发现该问题已经是reported,可能很快就会出现.使用以下script作为断开连接问题的变通方法修复 –#!/bin/bashcat << EOF############################################################ Workaround adb disconnecting issue on macOS…

Python 匿名函数 lambda - Python零基础入门教程

目录 一.Python 匿名函数 lambda 语法二.Python 匿名函数 lambda 调用 1.lambda 匿名函数常规使用2. lambda 匿名函数使用不定长参数3. lambda 匿名函数作为参数使用 三.Python 匿名函数 lambda 重点总结&#xff1a;四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录…

Nmap渗透测试详解(一)

Nmap渗透测试详解&#xff08;一&#xff09; 如今&#xff0c;Nmap享有“扫描之王”盛誉。 Nmap诞生于1996年。在这个信息爆炸的互联网时代&#xff0c;Nmap依然保持着充沛的活力以及旺盛的生命力。原因如下&#xff1a; 知名度高&#xff1a;只要是黑客&#xff0c;肯定知…

必须建筑师附体!像盖大楼那样打造数据即服务

近两年产业界总用“数据洪流”来形容数据的大爆发&#xff0c;但如果我们真把它视作洪水&#xff0c;那么它只会带来冲击&#xff1b;如能积极发掘其潜藏的价值&#xff0c;它则可能变成一条流金之河&#xff0c;正如麦肯锡在研究中发现的那样&#xff1a;与竞争对手相比&#…

华为鸿蒙用着怎么样,首批华为鸿蒙用户体验如何?“差评”有点难听,但是很真实!...

为了实现国产替代&#xff0c;打破海外企业对操作系统的垄断。华为集团推出了鸿蒙操作系统&#xff0c;这是一款真正意义上的国产操作系统&#xff0c;可以从一定程度上突破海外企业对手机操作系统的限制 。当然&#xff0c;一款操作系统的发展需要广大用户的支持&#xff0c;尽…

Python return逻辑判断表达式 - 零基础入门教程

目录 一.return 逻辑判断表达式 and二.return 逻辑判断表达式 or三.return 逻辑判断表达式 and 和 or 配合使用四.return 逻辑判断表达式重点总结五.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.return 逻辑判断表达式 and and&…

Metasploit渗透测试框架

Metasploit渗透测试框架 渗透测试是一类有目的性的、针对目标机构计算机系统安全的监测评估方法。渗透测试可以发现系统的漏洞和安全机制方面的隐患&#xff0c;并以此进行渗透攻击来取得目标计算机的控制权。通过渗透测试可以知道目标机构的计算机系统是否易于受到攻击&#…

用 Python 分析《斗破苍穹》,分析其究竟是烂片无疑还是沧海遗珠?

作者 | 量化小白H责编 | 郭芮近期根据小说《斗破苍穹》改编的同名电视剧正在热映&#xff0c;本文对《斗破苍穹》进行文本分析&#xff0c;分为两部分。首先爬取豆瓣影评进行简单分析&#xff0c;随后对于原创小说文本中的人物进行详细分析。影评分析爬取影评使用的也是之前《用…

android面试service,Android面试,与Service交互方式(4)

自定义接口交互4何谓自定义接口呢&#xff0c;其实就是我们自己通过接口的实现来达到Activity与Service交互的目的&#xff0c;我们通过在Activity和Service之间架设一座桥樑&#xff0c;从而达到数据交互的目的&#xff0c;而这种实现方式和AIDL非常类似(后文会说到)。4.1 实现…

Python input 函数 -Python零基础入门教程

目录 一.前言二.Python input 函数简介三.Python input 函数实战四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.前言 Python 内置函数其实挺多的&#xff0c;其中 input 和 eval 算得上比较特殊&#xff0c;input 属于交互式内置函数…

Metasploit基础和基本命令详解

Metasploit基础 2003年H.D Moore创建了Metasploit&#xff0c;从那之后Metasploit便快速发展起来&#xff0c;如今被公认为最为流行的渗透测试工具之一。Metasploit是一个完全的Ruby驱动项目&#xff0c;提供了大量的漏洞渗透、攻击载荷&#xff08;payload&#xff09;、编码…

综评:5个方面看刚刚发布的Kubernetes 1.12

Kubernetes项目在过去几年中发展迅速&#xff0c;并且作为容器编排和管理解决方案的领导者而备受尊重。有了这个地位&#xff0c;Kubernetes开发者有责任提供经过充分测试&#xff0c;易于维护&#xff0c;高性能和可扩展的API和工具。在即将到来的每个发布周期中&#xff0c;大…

华为麒麟1020鸿蒙系统,华为P50pro最新确认:麒麟1020+立体全面屏+鸿蒙系统,这才是华为...

原标题&#xff1a;华为P50pro最新确认&#xff1a;麒麟1020立体全面屏鸿蒙系统&#xff0c;这才是华为华为P系列一直是领导华为手机上半年的发展&#xff0c;而今年的华为P40系列更是实现了大爆发&#xff0c;市场上手机销量不断的攀升&#xff0c;并且权威的科技评测也给出了…

Python eval 函数 -Python零基础入门教程

目录 一.前言二.Python eval 函数简介三.Python eval 函数实战四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.前言 Python 内置函数其实挺多的&#xff0c;其中 input 和 eval 算得上比较特殊&#xff0c;input 属于交互式内置函数&…

Ruby-Metasploit的核心

Ruby-Metasploit的核心 Ruby编程语言可以说是Metasploit框架的核心。 根据Ruby官方网站介绍&#xff0c;Ruby编程语言简单而又强大&#xff0c;面向对象&#xff0c;为解释性语言&#xff0c;执行速度快&#xff0c;项目开发周期短&#xff0c;可以构建自动化类来重用代码是R…

干货 | 算法和编程面试题精选TOP50!(附代码+解题思路+答案)

作者 | javinpaul编译 | 王天宇、Jane整理 | Jane【导读】之前我们给同学们推荐了很多关于 Python 的面试资源&#xff0c;大家都表示很有用。这次营长表示要翻 Java 的牌子啦~ 应大家的强烈反馈&#xff0c;我们找了一套 Java 语言的算法和编程的面试题。这份面试资源主要包含…

Xml转换成html表格代码,如何用C++代码将XML文件转换为HTML表格?

我有一个XML文件。我想把它转换成HTML文件&#xff0c;并用我的C应用程序像HTML表一样表示它。有没有任何C库可以用来解析XML文件并创建HTML文件&#xff1f;示例:Belgian Waffles$5.95Two of our famous Belgian Waffles with plenty of real maple syrup650Strawberry Belgia…

Python map 函数 -Python零基础入门教程

目录 一.前言二.Python map 函数语法简介三.Python map 函数实战 1.使用 map 函数2.map 函数配合 lambda 匿名函数一起使用 四.Python map 函数效率对比五.Python map 函数总结六.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.前言 截…