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 ,那么这个函数就报错了。
  • 相关阅读:
    rs
    stm32f767 usoc3
    stm32f767 RTT 日志
    stm32f767 标准库 工程模板
    stm32f767 HAL 工程模板
    docker tab 补全 linux tab 补全
    docker anconda 依赖 下载 不了
    docker run 常用 指令
    linux scp 命令
    Dockerfile 常用参数说明
  • 原文地址:https://www.cnblogs.com/konggg/p/8989129.html
Copyright © 2011-2022 走看看