python基础学习(一)

作者:Shine 发布于:2018-06-21 16:35:10 浏览:773次 分类:PHP

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的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。
#
# 命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。
#
# 定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*,否则定义的将是位置参数。


标签: python function
声明:文章内容由作者原创或整理,转载请标明出处!
暂留位置!--请勿随意修改