目录

  • 一.前言
  • 二.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

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

  1. Python globals 函数 - Python零基础入门教程

    目录 一.Python globals 函数语法 二.Python globals 函数使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Pytho ...

  2. Python locals 函数 - Python零基础入门教程

    目录 一.locals 函数语法 二.locals 函数使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.locals ...

  3. Python reduce 函数 - Python零基础入门教程

    目录 一.Python reduce 函数简介 1.reduce 函数语法 2.reduce 函数原理 二.Python reduce 函数使用 1.reduce 函数普通使用 2.reduce 函数 ...

  4. Python chr 函数 - Python零基础入门教程

    目录 一.Python chr 函数简介 二.Python chr 函数使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一 ...

  5. Python bytes 函数 - Python零基础入门教程

    目录 一.bytes 函数简介 二.bytes 函数使用 1.定义空的字节序列 bytes 2.定义指定个数的字节序列 bytes ,默认以 0 填充,不能是浮点数 3.定义指定内容的字节序列 byt ...

  6. Python range 函数 - Python零基础入门教程

    目录 一.Python range 函数简介 二.Python range 函数使用 1.Python range 函数常规使用 2.Python range 函数在 for 循环中使用 三.猜你喜欢 ...

  7. Python callable 函数 - Python零基础入门教程

    目录 一.Python callable 函数简介 二.Python callable 函数使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Pyt ...

  8. Python super 函数 - Python零基础入门教程

    目录 一.Python super 函数简介 二.Python super 函数语法 三.Python super 函数使用 1.案例一 2.案例二: 四.猜你喜欢 零基础 Python 学习路线推荐 ...

  9. Python len函数 - Python零基础入门教程

    目录 一.Python len 函数简介 二.Python len 函数使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 在 ...

最新文章

  1. 数据库分析函数 MySQL_MySql数据库索引分析explain函数的使用
  2. easyui的datagrid的使用记录
  3. python画折线图详解-python如何画折线图
  4. SpringBoot连接Mysql数据库遇到Unable to load authentication plugin ‘caching_sha2_password解决方案
  5. 一文梳理多任务学习(MMoE/PLE/DUPN/ESSM等)
  6. 变量在内存中的值[c][code]
  7. 论文阅读笔记(四)【ACL 2021】FEW-NERD: A Few-shot Named Entity Recognition Dataset
  8. 固态硬盘上安装centos_自己动手丰衣足食 手把手教你安装M.2固态硬盘
  9. 十大企业级Linux服务器安全防护要点
  10. Java设计模式学习总结
  11. 中国大学排行榜网站的爬取
  12. 软件需求与分析课堂讨论一
  13. STM32CubeMX+Proteus仿真DS18B20
  14. 毫米波雷达技术及应用大解析
  15. 未检测到扫描仪Win10解决 WIA服务1061
  16. 微信动态二维码管理引流源码/微信活码/自动换群/微信朋友圈加群二维码
  17. ISP_DPC坏点矫正
  18. 计算机音乐谱子 追光者,岑宁儿《追光者》简谱
  19. supervisord简介
  20. 从一个真实案例去思考团队的打造,以及战斗力和凝聚力的提升

热门文章

  1. 掌门1对1微服务体系Solar|阿里巴巴Sentinel落地实践
  2. 升级遗留代码的最佳实践
  3. 极验创始人吴渊:恶意流量威胁新趋势,揭秘网络黑产3大核心本质
  4. Kubernetes 上调试 distroless 容器
  5. 奇点云集聚数据中台优势,加速企业数智化升级
  6. 真正拿大厂offer的人,都赢在这一点
  7. 对不起,我把APP也给爬了
  8. 32岁被裁补偿N+2:“感谢裁我,让我翻倍!” 网友:求同款被裁!
  9. 支持OpenStack,红帽将开源进行到底
  10. 华为与美国公司就授权5G平台展开初期谈判;Linux 中存在严重漏洞;Microsoft 发布 Cosmos DB GA 版……...