zoukankan      html  css  js  c++  java
  • Python学习笔记3 函数_20170614

    # 函数

    • 定义
    def my_abs(x) : 
        if not isinstance(x, (int, float)) : 
             raise TypeError('bad operand type')
        if x>0 :
            return x;
        elif x == 0 :# 只是为了显示pass的作用,什么都不做。对于函数逻辑是不对的。
            pass # pass 是占位符,什么都不做。
        else :
            return -x
    • 加载函数

    假如函数 my_abs 定义在文件 abstest.py 中,调用的加载方式为:

    from abstest import my_abs # 导入my_abs()
    • 加载库
    import math
    
    def move(x, y, step, angle=0)
        nx = x+step*math.cos(angle)
        ny = y+step*math.sin(angle)
        return nx, ny # 按照 tuple 方式返回多个变量
    •  函数参数1 位置参数(最一般的参数)

    见上面的例程,x、y、step

    • 函数参数2 默认参数

    见上面的例程,angle = 0

    •  函数参数3 可变参数(类似tuple传入)(常用做法,调用更简单)
    # 函数, number 是位置参数
    def calc(numbers) :
        su = 0
        for n in numbers:
            su = su+n*n
        return su
    
    # 调用
    >>>calc([1,2,3])
    >>>a = [1,2,3]
    >>>calc(a) # 这里都是以list作为参数传入
    
    
    # 函数,*number 是可变参数
    def calc(*numbers) :
        su = 0
        for n in numbers:
            su = su+n*n
        return su
    # 调用
    >>>calc(1,2,3) # 这是tuple
    >>>a = [1,2,3]
    >>>calc(*a) # 
    •  函数参数4 命令关键字参数(对参数4中可传入的类型加以限制)
    def person(name, age, *, city, gender) : 
        print(name, age, city, gender)
    
    # 表示参数 city 和 gender 一定要传入
    # 可以缺省
    # 可以设置默认值
    def person(name, age, *args, city='Beijing', gender) : 
        print(name, age, city, gender)
    
    # 注意 * ,是 city, gender 别于位置参数的标志符。
    •  函数参数5 关键字参数(类似dict传入)
    def person(name, age, **KeyWord) : 
        print('name : ', name, 'age : ', age, 'other : ', KeyWord)
    
    # **KeyWord就是关键字参数
    # 可以缺省调用
    >>>persion('AA', 10)
    name : AA age : 10 other : {}
    
    # 传入参数,关键字参数就是一个 dict 
    >>>person('AA', 10, city = 'Beijing', gender = 'M')
    name : AA age : 10 other : {'city''Beijing', 'gender' : 'M'}
    
    # 先设计dict,;2种调用方法
    >>> extra = {'city' : 'Beijing', 'gender' : 'M'}
    >>> person('AA', 10, **extra) 
     
    >>> person('AA', 10, city=extra['city'], gender = extra['gender'])
    • 函数参数的顺序

    函数的参数顺序必须如下:

    位置参数(list或者tuple传入)、

      默认参数()、

        可变参数(*L)(list或者tuple传入)、

           命名关键字参数(*,d)(有限制的dict传入)、

              键字参数(**d)(dict传入)

  • 相关阅读:
    .NET实现Excel文件的读写 未测试
    权限管理设计
    struts1中配置应用
    POJ 2139 Six Degrees of Cowvin Bacon(floyd)
    POJ 1751 Highways
    POJ 1698 Alice's Chance
    POJ 1018 Communication System
    POJ 1050 To the Max
    POJ 1002 4873279
    POJ 3084 Panic Room
  • 原文地址:https://www.cnblogs.com/alexYuin/p/7006944.html
Copyright © 2011-2022 走看看