zoukankan      html  css  js  c++  java
  • Python(四)-函数总结

    版权声明:


    本文作者为—陈鑫

    本文的所有内容均来陈鑫总结,未经本人许可,禁止私自转发及使用。

    QQ: 499741233

    E-mail: 499741233@qq.com


    第1章 Python函数

        面向对象
        面向过程
           1.可读性差
           2.重用性差
        函数式编程

    第2章 自定义函数

    看一个函数的例子:db文件内容为chenxin|123

    def login(username,password):
    
        '''
    
        用于用户登陆
    
        :param username: 用户输入用户名
    
        :param password: 用户输入密码
    
        :return: true,登陆成功 false,登陆失败
    
        '''
    
        file_name = open("db",'r')
    
        for line in file_name:
    
            line_list = line.split("|")
    
            if line_list[0] == username and line_list[1] == password:
    
                return True
    
        return False

    解释:

    1.def:表示函数的关键字

    2.函数名:函数的名称,日后根据函数名调用函数

    3.函数体:函数中进行一系列的逻辑计算,如:发送邮件

    4.返回值:当函数执行完毕后,可以给调用者返回数据。

    5.参数:为函数体提供数据(Python函数传递参数是传递一个引用。而不是重新赋值.)

        1.普通参数(严格按照顺序,将实际参数赋值给形式参数)

        2.默认参数(必须放置在参数列表的最后)

        3.指定参数(将实际参数复制给指定的形式参数)

        4.动态参数:

        *args 默认将位置参数,全部放置在元组中

        **kwargs 默认将关键字参数(字典),全部放置在字典中

        5.万能参数

    第3章 局部变量

    1.在程序中定义的变量成为局部变量。 
    2.局部变量作用域是定义该变量的子程序。 
    3.当全局变量与局部变量冲突时,在定义局部变量的子程序内,局部变量起作用,在其他地方全局变量起作用

    3.1 实  例:

    #!/usr/bin/env python
    
    name = "chenxin"
    
     
    
    def change_name(name):
    
        print("before change:", name)
    
        name = "陈鑫"  #定义局部变量
    
        print("after chage:", name)
    
     
    
    change_name(name)
    
     
    
    print("在外面看name改了么?",name)
    
    执行结果:
    
    before change: chenxin
    
    after chage: 陈鑫
    
    在外面看name改了么? chenxin

    第4章 全局变量

    一、在程序一开始定义的变量称为全局变量。

        1.全局变量定义变量,必须都是大写(潜规则)。比如:NAME="chenxin"

        2.函数优先读当前环境变量,如果没有则会读全局变量,全局变量在所有的作用域都可读。

        3.修改全局变量需要先global name,表示name是全局变量(重新赋值)。

        4.特殊:列表,字典,元组嵌套列表,可修改,不可重新赋值。

    第5章 内置函数

    # all           #非0即真
    
    # any           #
    
    # bool          #0和,空字典空列表都是假
    
    # callable      #表示是否可执行,或是否可调用
    
    # dir           #快速查看对象提供了哪些功能
    
    # divmod        #文章分页使用
    
    # isinstance    #用于判断,对象是否是某个类的实例
    
    # globals       #列出全局变量
    
    # locals        #列出所有局部变量
    
    # hash          #
    
     
    
    #enumerate
    
    #float
    
    #format
    
    #frozenset
    
     
    
    # max           #最大
    
    # min           #最小
    
    # sum           #求和
    
    # int           #整数
    
    # hex           #十进制转换十六进制
    
    # bin           #十进制转二进制
    
    # oct           #十进制转十进制
    
    # filter        #内部循环,参数比较
    
    # map           #将函数返回值添加到结果中
    
    # compile       #将字符串,编译成Python代码
    
    # eval          #执行表达式,并且获取结果
    
    # exec          #执行Python代码,接收:代码或者字符串
    
    #id             #查看内存地址
    
    #input          #等待用户输入
    
    # isinstance    #查看某个对象是不是某个类的实例
    
    # issubclass    #
    
    # len           #查看长度
    
    # list          #
    
    # memoryview    #查看内存地址相关类
    
    # next          #
    
    # iter          #创建迭代器
    
    # object        #所有类的复类
    
    # open          #
    
    # ord           #
    
    # pow           #
    
    # print         #
    
    # property      #
    
    # range         #
    
    # repr          #
    
    # reversed      #反转
    
    # round         #
    
    # set           #集合
    
    # slice         #
    
    # sorted        #
    
    # staticmethod  #
    
    # str           #字符串
    
    # super         #面向对象
    
    # tuple         #元祖
    
    # type          #类型
    
    # vars          #当前模块有哪些变量
    
    # zip           #压缩
    
    # __import__    #导入模块
    
     
    
     
    
    # delattr()    
    
    # getattr()    
    
    # setattr()

    第6章 函数返回值

    想要获取函数的执行结果,就可以用return语句把结果返回。

    1.函数在执行过程中只要遇到return语句,就会停止执行并返回结果,也可以理解为return语句代表着函数的结果。

    2.如果未在函数中指定return,那这个函数的返回值为None。

    第7章 递归函数

    在函数内部,可以调用其他函数。如果一个函数在内部调用自身,这个函数就是递归函数。

    #!/usr/bin/env python
    
    def calc(n):
    
        print(n)
    
        if int(n/2) ==0:
    
            return n
    
        return calc (int(n/2))
    
     
    
    calc(10)

    7.1 递归特征: 

    1、必须有一个明确的结束条件。 

    2、每次进入更深一层递归时,问题规模相比上次递归都应有所减少。

    3、递归效率不高,递归层次过多会导致栈益处(在计算机中,函数调用是通过栈(stack)这种数据结果实现的,每当进入一个函数调用,栈就会加一层栈帧,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈益处。

    第8章 匿名函数

    匿名函数就是不需要显示的指定函数

    #!/usr/bin/env python
    
    def calc(n):
    
        return n**n
    
    print(calc(10))
    
     
    
    #换成匿名函数
    
    calc = lambda n:n**n
    
    print(calc(10))
    
    #从上看来好像并无卵用,如果是这么用确实没毛改进,不过匿名函数主要是和其他函数搭配使用,如下:
    
    res = map(lambda x:x**2,[1,5,7])
    
    for i in res:
    
        print(i)
    
    #结果:
    
    1
    
    25
    
    49

    第9章 高阶函数

         变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

    #!/usr/bin/env python
    
    def add (x,y,f):
    
        return f(x) + f(y)
    
     
    
    res = add(3,-6,abs)
    
    print(res)

    第10章 函数式编程

    函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。

    而函数式编程,虽然也可以归结到面向过程的程序设计,但其思想更接近数学计算。 
    我们首先要搞明白计算机(Computer)和计算(Compute)的概念。 
    在计算机的层次上,CPU执行的是加减乘除的指令代码,以及各种条件判断和跳转指令,所以,汇编语言是最贴近计算机的语言。 
    而计算则指数学意义上的计算,越是抽象的计算,离计算机硬件越远。

    函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。 
    函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数! 
    Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。

    (1 + 2) * 3 - 4

    #传统的过程式编程,可能这样写:

        var a = 1 + 2;
    
        var b = a * 3;
    
        var c = b - 4;

    #函数式编程要求使用函数,我们可以把运算过程定义为不同的函数,如下:

        var result = subtract(multiply(add(1,2), 3), 4);

    #这就是函数式编程(就会这么多)

  • 相关阅读:
    LevelDB的源码阅读(四) Compaction操作
    LevelDB的源码阅读(三) Get操作
    LevelDB的源码阅读(三) Put操作
    高级测试/测试开发技能
    IM测试功能点
    深入理解--SSM框架中Dao层,Mapper层,controller层,service层,model层,entity层都有什么作用
    Jmeter非GUI分布式测试
    全套支付宝系统架构(内部架构图)【收藏】
    Jmeter
    报表类相关测试范围总结
  • 原文地址:https://www.cnblogs.com/cxcx/p/6047863.html
Copyright © 2011-2022 走看看