python基础学习--function param
# names = {'lianghui': 3, '梁辉': 4} # # print(names.get('lianghui')) # python函数可以返回多个数值 其实是返回的元组 # def test(x, y): # return x, y # 函数参数默认值需要给不变对象,不能是[],多次调用时会有问题 # def add_add(l=None): # if l is None: # l = [] # l.append('END') # return l # 参数个数可变 # def calc(*numbers): # sum = 0 # for n in numbers: # sum = sum + n # return sum # 关键词参数 可传入任意个数的关键词参数 可变参数可以直接用dict传值进去{'age': 24, 'job': 'engineer'} # 关键字参数有什么用?它可以扩展函数的功能。比如,在person函数里,我们保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。 # def person(name, age, **kw): # print('name:', name, 'age:', age, 'other:', other) # 带参数的关键字参数 | 和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数。 # def person(name, age, *, city, job): # print(name, age, city, job) # 如果函数中已经有了一个可变参数 后面跟着的命名关键字参数就不需要特殊分隔符*了 # *****命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错 # def person(name, age, *args, city, job): # print(name, age, args, city, job) def test(): return True if __name__ == '__main__': test() # res = test(1, 2) # res = add_add() # res = calc(1, 2) # person('lianghui', '23', sex='男', job='engineer') # person('lianghui', 23, city='Beijing', job='engineer') # person('lianghui', 23, ('lianghui', '24'), city='Beijing', job='engineer') # note # Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。 # # 默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误! # # 要注意定义可变参数和关键字参数的语法: # # *args是可变参数,args接收的是一个tuple; # # **kw是关键字参数,kw接收的是一个dict。 # # 以及调用函数时如何传入可变参数和关键字参数的语法: # # 可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3)); # # 关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})。 # # 使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。 # # 命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。 # # 定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*,否则定义的将是位置参数。