python-基础-参数传递的多种方式

参数传入

可变参数
可变参数可以传入0个或者任意个参数

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
#调用的时候可以使用任意长度
calc(1, 2)

#list或者tuple需要在前面加*
nums = [1, 2, 3]
calc(*nums)

关键字参数
关键字参数可以自动组装成一个字典

def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

#可以只传入必选参数
person('Michael', 30)

#也可以传入任意个数的关键字参数
person('Adam', 45, gender='M', job='Engineer')
#输出name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

# 如果组装成字典,也能传入
extra = {'city': 'Beijing', 'job': 'Engineer'}
person('Jack', 24, **extra)
#输出 name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

命名关键字参数
比如person函数,如果直接定义关键字参数,传入的内容是任意的

def person(name, age, **kw):
    if 'city' in kw:
        # 有city参数
        pass
    if 'job' in kw:
        # 有job参数
        pass
    print('name:', name, 'age:', age, 'other:', kw)

person('Jack', 24, city='Beijing', addr='Chaoyang', zipcode=123456)

命名关键字参数可以限制输入的参数,比如只接受city和job

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

#调用方式
person('Jack', 24, city='Beijing', job='Engineer')

定义的时候可以有缺省值

def person(name, age, *, city='Beijing', job):
	print(name, age, city, job)

#调用时可不传入city参数
person('Jack', 24, job='Engineer')

参数组合

  • 必选参数
  • 默认参数
  • 可变参数
  • 关键字参数
  • 命名关键字参数

对于任意函数都可以通过func(*args, **kw)的形式调用,无论参数如何定义

posted @ 2016-11-25 17:35  zhangshihai1232  阅读(96)  评论(0)    收藏  举报