zoukankan      html  css  js  c++  java
  • Python测试开发之函数

    对于初学者而言,感觉函数还是不是很好理解,尤其是当写一个脚本,或者是写一个算法,认为可能for循环就已经可以解决的问题为什么还要用函数来实现呢?

    今天就来说一下函数的优点,其实函数的最大优点就是可重用,一个函数实现后可以被其他不同的脚本来调用,这也就是体现了代码的重用性。

    1. 函数的定义:def 函数名():,在定义函数时,一定要用关键字def开头,然后紧接着是函数名,括号里是要传的的参数,当然也可不传,最后面是个冒号:

        def add(x,y):

            return x+y

      这就是一个最简单的函数

      2.函数的返回值:Python中自定义的函数如果有return,则返回实际的结果,如果没有返回值,则返回None,这是Python与其他语言的区别之一

      3.函数的调用:在定义好一个函数后,如果要实现函数的功能,一定要对其进行引用,不然函数体是不会被执行的,调用的方法也很简单,就是函数名和需要的参数即可

      例如上边add函数的调用: add(2,3)即可返回5

      

      注意:此处如果传入两个字符串也是OK的,这也是Python的特殊之处,他会根据传入的值来进行相应操作,如果传入的是两个数字,则进行相加,如果是两个字符串则进行拼接,但是此处必须传入的类型一致,否则会报错,所以可以根据你的需要进行处理,如果要做特定的实现可以用isinstance来判断一下类型,来达到自己想要的效果。

      

      

      4.函数的传参:函数的参数分为按值传递和按地址传递。按值传递是将不可变的参数传递给函数,按地址传递是将可变的参数传递给函数。此处的可变参数与不可变参数是相对内存地址而言的,如果传入的是字符串、元祖、数字,是不可变对象,就是按值传递,为什么说是不可变的,例如如果将a=1这样一个变量传递给函数,那么就是说将1的内存地址传给函数,那么计算机给1分配过内存地址后就不会在变化,所以说在函数体内对a做的任何操作都不会影响函数体外a的值,来看一个例子就会比较好理解了:

    a =1

    def print_sth(s):
    s=s+1
    return s

    print print_sth(a)
    print a

      执行结果:

      

      下面我们来看一下原理:

      这就是按值传递的原理,当函数体内对a进行加1操作,实际是指向另一个内存地址了,用id()就可以查看内存地址

      5.看了按值传递的原理,按引用传递应该就好理解了,按引用传递就是传递一些可变参数,例如list、dict等,先来看一下他们的内存地址的变化:

      

      可以看到当你在对一个list进行操作时,它指向的内存地址实际是没有变化的,所以说当传递可变参数时,函数体内对变量的操作是会影响函数体外的变量的,看一个例子就更明白了:

      

      现在对函数的按值传递和按引用传递参数应该非常了解了吧。

      6.可变参数的表示:*args表示传入的是一个元祖,**args表示传入的是一个字典,在实际使用中当不确定要传入多少个参数时,就可以使用这种方法:

      def func(a,*args):

        for i in args:

          a +=i

        return a

      

      你会发现,你传递几个参数都不会出问题,这就是可变参数的好处,然后看一下**args吧:

      

      看完这些,你是否对函数有了很大理解,现在应该感觉函数可以实现很多你想要实现的功能吧,这可不仅仅是几个for循环就能实现的哦,赶快学学函数吧,这也是后面写好代码的基础。

      

  • 相关阅读:
    如何查看openssl支持的所有TLS/SSL版本
    讲故事,学(AHK)设计模式—观察者模式
    React Hooks 详解 【近 1W 字】+ 项目实战
    为什么要在函数组件中使用React.memo?
    js防抖函数
    JS 深度优先遍历与广度优先遍历 实现查找
    你不知道的 requestIdleCallback
    RE:ゼロから始める文化課生活
    开学考小记 & 新生活的开始
    JS中:数组和对象的区别,以及遍历数组和遍历对象的区别
  • 原文地址:https://www.cnblogs.com/bettywang/p/8007482.html
Copyright © 2011-2022 走看看