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


      Py的参数还真是多,用起来还是很方便的,这么多参数种类可见它在工程上的实用性还是非常广泛的。

    挺有意思的,本文主要参照Liaoxuefeng的Python教程。

    #必选参数
    def quadratic(a, b, c):
        if not isinstance(a, (int, float)) or not isinstance(b, (int, float)) or not isinstance(c, (int, float)):
            raise TypeError('bad operand type')
        if a == 0:
            return -c / b
        else:
            return (math.sqrt(b * b - 4 * a * c) - b)/ 2.0 / a, ( - math.sqrt(b * b - 4 * a * c) - b)/ 2.0 / a
    print(quadratic(2, 3, 1))
    print(quadratic(1, 3, -4))
    
    def pow(x, n = 2):
        s = 1
        while(n):
            n -= 1
            s *= x
        return s
    print(pow(2,5))
    
    def add_end(L = []):
        L.append('End')
        return L
    print(add_end())
    print(add_end())
    
    def add_end(L = None):
        if L is None:
            L = []
        L.append('End')
        return L
    print(add_end())
    print(add_end())
    
    #可变参数
    def calc(*nums):
        sum = 0
        for i in nums:
            sum += math.pow(i, 2)
        return sum
    num = [1,2]
    print(calc(1,2))
    print(calc(*num))
    
    #关键字参数
    """关键字参数有什么用?它可以扩展函数的功能。"""
    """比如,在person函数里,我们保证能接收到name和age这两个参数,"""
    """但是,如果调用者愿意提供更多的参数,我们也能收到。"""
    """试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,"""
    """利用关键字参数来定义这个函数就能满足注册的需求。"""
    def person(name, age, **kw):
        print('name:', name, 'age:', age, 'others:', kw)
        if 'School'in kw:
            print("有School 信息")
    person("李金旭", 11, School = ['Neu','Swun'], Contry = 'China')
    
    #命名参数
    '''如果要限制关键字参数的名字,就可以用命名关键字参数,
        例如,只接收city和job作为关键字参数。这种方式定义的函数如下:'''
    def person(name, age, *, city, job):
        print(name, age, city, job)
    person("李金旭", 11, city = ['Neu','Swun'], job = 'China')
    
    def person(name, age, *argv):
        print(name, age, argv)
    person("李金旭",11,'Neu')
    
    def person(name, age, *, city, job):
        print(name,"is", age," years old in ", city, "as a ",job)
    person("李金旭",11,city = "Bejing", job = "IT front to end Engineer")
    
    #参数组合
    '''
        在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。
        但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
    '''
    '''
        *args是可变参数,args接收的是一个tuple;
        **kw是关键字参数,kw接收的是一个dict。
    '''
    def func1(a, b, c = 0, *argv, **kw):
        print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
    def func2(*argv, **kw):
        print(argv, kw)
    args = (1,2,3,4)
    kw = {'Name':'李金旭', 'Age': 11}
    func2(args, kw)

    哎,论文还没看完,又搞了半天这些乱七八糟的。。。烦

  • 相关阅读:
    [luoguU48834][count]
    [ZROJ110][假如战争今天爆发]
    [luogu4860][Roy&October之取石子II]
    [luogu4018][Roy&October之取石子]
    [luoguU48574][藏妹子之处]
    [20181025晚][模拟赛]
    [20181025上午][模拟赛]
    ElasticSearch业务逻辑案例
    ElasticSearch安装及使用
    面试必问:ACID/CAP
  • 原文地址:https://www.cnblogs.com/luntai/p/5573424.html
Copyright © 2020-2023  润新知