天天看点

python 函数参数 *args 和 **kwargs

例子:

def stu_register1(name,age,*args,**kwargs):
    print(name,age,args,kwargs)
stu_register1("xiaoxue",25,2,3)
stu_register1("Jack",32,"CN","Python",sex="Male",province="ShanDong")      

输出:

xiaoxue 25 (2, 3) {}

Jack 32 ('CN', 'Python') {'sex': 'Male', 'province': 'ShanDong'}

可以看出,args,kwargs 是python中的可变参数,*args 表示任何多个无名参数,他是一个tuple;**kwargs 表示关键字参数,是一个字典dict,并且同时使用*args和kwargs时,必须*args参数列要在**kwargs前,否则有时在调用时,会提示语法错误。

知道*args和**kwargs是什么了吧,还有一个漂亮的用法,就是创建字典:

def create_dict(**kwargs):
    # print(kwargs)
    return kwargs
dict1=create_dict(name="zongyimin",sex="male",province="HeBei")
print(dict1)      

输出:

{'sex': 'male', 'name': 'zongyimin', 'province': 'HeBei'}

其实python中就带有dict 类,使用dict(a=1,b="two")即可。但是输出结果却是随机输出

print(dict(a=1,b="two"))      
输出:      
{'b': 'two', 'a': 1} or {'a': 1, 'b': 'two'}
      
变量定义的规则:

       
    • 变量名只能是 字母、数字或下划线的任意组合
    • 变量名的第一个字符不能是数字
    • 以下关键字不能声明为变量名

      ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']