python札记-参数混用

Python-参数混用

前言
该篇文章主要记录python中参数混用问题,当然,主要是普通参数关键字参数以及收集参数三者的混用

python中的参数分类

  • 普通参数
  • 默认参数
  • 关键字参数
  • 收集参数(即不定长参数)
    • 普通收集参数
    • 关键字收集参数

简单的规则:先普通,再关键

普通(普通参数普通收集参数)在前,关键字(关键字参数关键字收集参数)在后
格式:def func(普通参数, 普通收集参数, 关键字参数, 关键字收集参数)

# 示例代码1:普通参数在前
def stu1(name, age, *args, hobby="没有", **kwargs):
    print("***********普通参数***********************")
    print("Hello,大家好")
    print("我叫{0}, 我今年{1}岁了".format(name, age))
    print("***********关键字参数***********************")
    if hobby == "没有":
        print("我没有爱好,谢谢")
    else:
        print("我的爱好是{0}".format(hobby))
    
    print("**********普通收集参数************************")
    for i in args:
        print(i)
    
    print("**********关键字收集参数************************")
    for k,v in kwargs.items():
        print(k, "---", v)
        
stu1(name, age, "王晓静", "刘石头", hobby="游泳", hobby2="烹饪", hobby3="跟不同女生聊天")

############以下为代码输出##############################################################
***********普通参数***********************
Hello,大家好
我叫liuying, 我今年19岁了
***********关键字参数***********************
我的爱好是游泳
**********普通收集参数************************
王晓静
刘石头
**********关键字收集参数************************
hobby2 --- 烹饪
hobby3 --- 跟不同女生聊天

如果把参数的顺序反过来,则会报语法错误。

# 示例代码2:关键字参数在前,会报语法错误
def stu2(hobby="没有", **kwargs, name, age, *args):
    print("***********普通参数***********************")
    print("Hello,大家好")
    print("我叫{0}, 我今年{1}岁了".format(name, age))
    print("***********关键字参数***********************")
    if hobby == "没有":
        print("我没有爱好,谢谢")
    else:
        print("我的爱好是{0}".format(hobby))
    
    print("**********普通收集参数************************")
    for i in args:
        print(i)
    
    print("**********关键字收集参数************************")
    for k,v in kwargs.items():
        print(k, "---", v)
        
stu2(hobby="游泳", hobby2="烹饪", hobby3="跟不同女生聊天", name, age, "王晓静", "刘石头")

###################以下是代码输出###############################################################
File "", line 2
    def stu2(hobby="没有", **kwargs, name, age, *args):
                                      ^
SyntaxError: invalid syntax

你可能感兴趣的:(python札记-参数混用)