Python函数参数

python中的函数参数比较灵活,也有些比较容易搞晕,所以这里做了一个总结,理一下这里的知识点,主要是来自于廖雪峰老师的python教程.

1、位置参数

这个参数就是我们就像我们在所有语言的函数中参数一样。

def person(name, age, city):
    print(name, age, city)
person("wang", 20, "chengdu")

2、默认参数

在定义函数的时候,设置该位置上的参数的默认值
在调用该函数的时候,就可以不用传递该参数的值

def person(name, age, city="chengdu"):
    print(name, age, city)
person("wang", 20)

3. 可变参数

在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。
这个时候,在函数中的args是以元祖的形式存在

def person(*args)
     for n in args:
        print(n)


# 直接传递字符串参数:
person("wang", 20, "chengdu")

# 传递列表或者元祖:
person(*("wang", 20, "chengdu"))

4. 关键字参数

可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

def person(name, age, **kw):
    print("name:%s\n age:%s\n other:%s" % (name, age, kw))


# 直接传入关键字参数:
person("wang", 20, city = "chengdu", job="engineer")

# 传入字典参数需要在前面添加**:
person("wang", 20, **{"city":"chengdu", "job":"engineer"})

5. 命名关键字参数:

在传递参数的时候需要限制关键字名字就要使用这个。

def person(name, age, * , city):
    print(name, age, city)

# 若在命名关键字前面已经有了可变参数,就可以不用写*
def person(name, age , *args, city):
    print(name, age, city, args)

总结
参数的顺序是位置参数, 默认参数,可变参数,命名关键字参数,关键字参数
可变参数在参数前面添加*
命名关键字参数在前面添加,,的参数,如果在前面有可变参数就可以不用写
关键字参数在参数前面添加**

你可能感兴趣的:(Python函数参数)