zoukankan      html  css  js  c++  java
  • Day5

    定义函数
        Python中定义函数要使用def语句。
        依次写出函数名、括号、括号中的参数和冒号,在缩进块中编写函数体,通过return语句返回函数返回值。如:
       
                        def my_abs(x):
                        if x >= 0:
                            return x
                        else:
                            return -x
                           
        一旦执行到return,函数就执行完毕。即使函数未使用return语句,函数执行完毕后也会返回结果,只是结果为None。
        return None可以简写为return。
                >>> def kk(x):
                ...     if x == 0:
                ...             return 'zero'
                ...     elif x < 0:
                ...             x = x + 1
                ...             return x
                ...     elif x > 0:
                ...             return x - 100
                ...
                >>> kk(10)
                -90
                >>> kk(0)
                'zero'
                >>> kk(-100)
                -99
               
    函数保存到文件后的调用
        如果已经将定义的函数定义保存为.py文件了(如:aaa.py),那么可在该文件的当前目录下启动Python解释器,使用 from aaa import kk 来导入存放在aaa.py文件中的 kk() 函数 , 文件名不含.py扩展名。
       
    空函数
        定义一个什么也不做的空函数,可以使用pass语句,如:
            def nothing():
                pass
    空函数可以用来做占位符,例如,在程序框架阶段,可能函数的详细代码还未去完成,可以先写一个pass语句,让代码框架能运行起来。pass还可以在其他语句中(如 if)使用。
    参数检查
        先对比一下定义函数和内置函数的不同:
            1.定义一个求绝对值的函数abs_own,
                def abs_own(x):
                    if x > 0:
                        return x
                    else:
                        return -x
            2.现在对该函数传送错误参数,如:
                    >>> abs_own(5)
                    5
                    >>> abs_own(-5)
                    5
                    >>> abs_own('a')
                    Traceback (most recent call last):
                      File "<stdin>", line 1, in <module>
                      File "<stdin>", line 2, in abs_own
                    TypeError: unorderable types: str() > int()
                   
            3.对内置求绝对值函数abs传送错误参数,如:
                    >>> abs(-5)
                    5
                    >>> abs('a')
                    Traceback (most recent call last):
                    File "<stdin>", line 1, in <module>
                    TypeError: bad operand type for abs(): 'str'
        通过对比2和3的结果,定义函数的报错信息与内置函数的报错信息不同,定义函数在遇到参数数据类型不对时,无法为我们进行参数检查。
       
    isinstance() 数据类型检查
        用abs_own()举例子,要求传入的参数只可以是整数或浮点数,如果参数非法则抛出错误信息:
            def abs_own(x):
                if not isinstance(x, ( int , float ) ):
                    raise TypeError( 'bad operand type' )
                if x >= 0:
                    return x
                else:
                    return -x
        再次进行错误参数传递,结果为:
                >>> abs_own(5)
                5
                >>> abs_own(-5)
                5
                >>> abs_own('a')
                Traceback (most recent call last):
                  File "<stdin>", line 1, in <module>
                  File "<stdin>", line 3, in abs_own
                TypeError: bad operand type #抛出了预定的错误信息。
               
    函数返回多个值
        实际上,函数返回的是单一值(其实是一个tuple), 因为在返回tuple时可以省略括号,所以多个变量可以通过获取tuple元素位置的方式,按照位置来获取对应的值。
       
       
    练习:定义函数,解一元二次方程ax^2 + bx + c = 0
                import math
                def fangcheng(a,b,c):
                    if not isinstance(a, (int,float) ):
                            raise TypeError(print(a,'must be a number'))
                    if not isinstance(b, (int,float) ):
                            raise TypeError(print(b,'must be a number'))
                    if not isinstance(c, (int,float)):
                            raise TypeError(print(c,'must be a number!'))
                    if pow(b,2) - 4 * a * c < 0:
                            return('无解')
                    else:
                            x = []
                            x.append(  ( -b + math.sqrt(pow(b,2) - 4 * a * c))     /    (2 * a)    )
                            x.append(  ( -b - math.sqrt(pow(b,2) - 4 * a * c))     /    (2 * a)    )
                            return x
                xi = int(input('1 number'))
                xii = int(input('2 number'))
                xiii = int(input('3 number'))
                print(fangcheng(xi,xii,xiii))
        #对abc的值的判断其实有问题,如果b、c为0 ,那么这个函数就报错了。
  • 相关阅读:
    Yii增删改查
    10个超级有用、必须收藏的PHP代码样例
    yii源码分析I、II
    Yii源码阅读笔记
    Yii源码阅读笔记
    Yii源码阅读笔记
    当浏览器输入url的时候发生了什么
    js模块化值之seaJS
    js判断字符串中的英文和汉字
    display:table-cell的惊天作用,直接惊呆你!
  • 原文地址:https://www.cnblogs.com/konggg/p/8989129.html
Copyright © 2011-2022 走看看