百木园-与人分享,
就是让自己快乐。

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 类型;

五.猜你喜欢

  • Python 配置环境
  • Python 变量
  • Python 运算符
  • Python 条件判断 if/else
  • Python while 循环
  • Python break
  • Python continue
  • Python for 循环
  • Python 字符串
  • Python 列表 list
  • Python 元组 tuple
  • Python 字典 dict
  • Python 条件推导式
  • Python 列表推导式
  • Python 字典推导式
  • 未经允许不得转载:猿说编程 » Python 不定长参数 *argc/**kargcs

    本文由博客 - 猿说编程 猿说编程 发布!

    来源:https://www.cnblogs.com/shuopython/p/14867063.html
    图文来源于网络,如有侵权请联系删除。

    未经允许不得转载:百木园 » Python 不定长参数 *argc/**kargcs - Python零基础入门教程

    相关推荐

    • 暂无文章