zoukankan      html  css  js  c++  java
  • Python学习week5-函数

    1、函数的定义与调用

    1.1、什么是函数?

    • 数学定义:y=f(x),y是x的函数,x是自变量;y=f(x1,x2,x3...)
    • Python函数定义:
      • 由若干语句组成代码块,函数名称,参数列表构成;它是组织代码的最小单元;
      • 完成一定的功能

    1.2、函数的作用?

    • 结构化编程对代码的最基本的封装,一般按功能组织一段代码;
    • 函数封装的目的是为了函数的复用(一次定义多次调用),减少代码重复;
    • 代码更加简洁易读;

    1.3、函数的分类?

    • 内建函数
    • 库函数
    • 自定义函数

    1.4、函数的定义?

    # def 语句定义函数
    def 函数名(参数列表):
        函数体
        [return 返回值]
    ############
    (1)函数名就是标识符,命名要求和标识符要求一样;
    (2)语句块必须缩进,约定为4个空格
    (3)Python的函数,如果没有return语句,默认return None
    (4)定义中的参数列表为函数的形式参数,只是一种符号表达,简称为形参;

    1.5、函数的调用

    # 函数的调用
    函数名() 表示函数的调用;
    (1)函数定义,只是声明了一个函数(只会检查语法),不会执行;
    (2)调用时的参数就是实际参数,就是给函数传递的实际值; 

    2、函数的参数

    2.1、函数参数的分类

    • 形参:函数在定义时的参数;
      • 位置参数
      • 关键字参数
      • 默认参数
      • 可变位置参数
        • args = tuple()
      • 命名关键字参数(kword only) 
        • 例如:def fn(x,y,*,a=10),这里的‘*’就是只是一个标识符,声明后面的a为keyword-only参数,必须传值; 
      • 可变关键字参数
        • kwargs=dict()
    • 实参:函数在调用时的参数;
      • 位置参数
      • 关键字参数
    def fn(x,y,z=5,*args,a=5,**kwargs,):
        print(1,"x",x)
        print(2,"y",y)
        print(3,"z",z)
        print(4,"args",args)
        print(5,"a",a)
        print(6,"kwargs",kwargs)
    
    fn(1,2,3,4,5,a=10,b=11,c=12)
    '''
    运行结果:
    1 x 1   位置参数x
    2 y 2   位置参数y
    3 z 3   默认参数z
    4 args (4, 5)   可变长参数 args
    5 a 10  命名关键字参数 a
    6 kwargs {'b': 11, 'c': 12} 关键字参数 kwargs
    '''

    参数规则:参数列表的一般顺序为,普通,缺省,可变位置,keyword-only(可带缺省值),可变关键字参数;

    3、函数参数的解构

    # 参数解构:

      (1)给函数提供实参的时候,可以在集合类型前使用*或者**,把集合类型的结构解开,提出所有元素作为函数的实参;

      (2)非字典类型使用 ‘*’ 解构成位置参数;

      (3)字典类型使用‘**’解构成关键字参数;

      (4)解构出来的元素数目要与参数的要求一致,也要和参数类型匹配; 

    ##参数解构
    def add(x:int,y:int)->int:
        print(x,y)
        return x + y
    
    print(add(*(4,5)))      # x,y=(4,5)
    print(add(*[1,2]))      # x,y=[1,2]
    print(add(*{1,2}))      # x,y={1,2}
    print(add(**{'x':4,'y':6}))  # x,y={'x':4,'y':6}
    print(add(**{'x':4,'y':6}))  # x,y={'x':4,'y':6}   ==>x=4,y=6
    print(add(**{'a':4,'b':6}))
    '''
    TypeError: add() got an unexpected keyword argument 'a'
    # 运行报错, a,b={'a':4,'b':6} ==> a=4,b=6 ==>add(a=4,b=6) 而add函数的参数列表并没有参数a,所以报错
    ''' def add(*args,sum=0): for i in args: sum+=i return sum ret1=add(*[1,2,3,4,5]) ret2=add(*[i for i in range(100) if i%2]) print(ret1,ret2)
  • 相关阅读:
    mysql基础以优化
    Mysql建立索引基础
    Mysql(1)
    SVN学习总结
    Github
    Java Eclipse断点调试
    Java设计模式图文详解
    代理模式
    Java——动态代理技术
    Spring基本概念理解
  • 原文地址:https://www.cnblogs.com/soulgou123/p/9555392.html
Copyright © 2011-2022 走看看