美文网首页
Chapter3 函数进阶

Chapter3 函数进阶

作者: 木果渣 | 来源:发表于2017-12-11 22:57 被阅读0次
    ##basic func
    def my_abs(x):
        if x >= 0:
            return x
        else:
            return -x
    
    print(my_abs(-99))
    
    
    ##nothing
    def nop():
        pass
        
    
    ##params check
    def new_my_abs(x):
        if not isinstance(x, (int, float)):
    ##      raise TypeError('bad operand type')
            return
        if x >= 0:
            return x
        else:
            return -x
    
    print(new_my_abs('A'))
    
    
    ##default params
    def add_end(L=None):
        if L is None:
            L = []
        L.append('END')
        return L
        
    
    ##return mutiple values
    import math
    
    def move(x, y, step, angle = 0):
        nx = x + step * math.cos(angle)
        ny = y - step * math.sin(angle)
        return nx, ny
    
    print(move(100, 100, 30, math.pi / 6))  
    point = move(100, 100, 30)
    print('x: ', point[0],  ';y: ', point[1])   
        
        
    ##参数numbers接收到的是一个tuple
    def calc(*numbers):
        sum = 0
        for n in numbers:
            sum += n * n
        return sum
        
    print(calc(1, 2, 3))
    print(calc())
    
    
    ##key params
    ##可变参数在函数调用时自动组装为一个tuple
    def person(name, age, **kw):
        print('{name:',name, ',age:', age, ',other', kw, '}')
    print(person('Alice', 15))
    ##{name: Bob ,age: 15 ,other {'city': 'Beijing'} }
    print(person('Bob', 15, city = 'Beijing'))
    
    
    ##限制关键字参数的名字
    def person_2(name, age, *, city):
        print(name, age, city)
    person_2('HaiYa', 12, city='ShangHai')
    ##ERROR:    person_2('HaiYa', 12, 'ShangHai')
    
    
    ##parictise
    ##x*y1*y2.....
    def product(x, *y):
        num = x
        for y_x in y:
            num *= y_x
        print(num)
        
    product(1)
    product(1,2,3,4,5,6)
    
        
    ##ax^2 + bx + c = 0
    import math
    
    def quadratic(a, b, c):
        if a == 0:
            raise TypeError('a is 0!')
        num = b ** 2 - 4 * a *c 
        if num < 0:
            raise TypeError('b^2 - 4ac < 0')
        elif num > 0:
            x_1 = (math.sqrt(num) - b)/(a * 2)
            x_2 = (- math.sqrt(num) - b)/(a * 2)
            return x_1, x_2
        return  (- b)/(a * 2)
        
    print(quadratic(1, 8, 2))
    print(quadratic(1, 2, 1))
    print(quadratic(1, 2, 4))
    
        
    

    相关文章

      网友评论

          本文标题:Chapter3 函数进阶

          本文链接:https://www.haomeiwen.com/subject/jgowixtx.html