zoukankan      html  css  js  c++  java
  • .Net程序员之Python基础教程学习----函数和异常处理[Fifth Day]

         今天主要记录,Python中函数的使用以及异常处理.

       一.函数:

         1.函数的创建以及调用.

    def Add(val1,val2):
        return  val1+val2;
    print Add(1,2)

            2. 定义返回多参数的函数,返回的参数以元组的形式返回,可以通过下表索引来获取单个值,下面是获取两数之差和两数之和的函数. 整体上来说还是不错的,在C#中我们一般都用out来实现,多个参数改变返回,不过那样可读性不好。

    def GetSubAndSum(val1,val2):
        return  val1-val2,val1+val2
    
    print GetSubAndSum(2,3)  #Answer:(2,3)
    print GetSubAndSum(2,3)[0] #Answer(2)

        3. 函数实现多参数. 下面例子实现任意参数的参数和. 通过*可以实现多参数。1个*号转换为元组,2个*号转换为字典,至于3个*号没试过,想想应该没人会川那么复杂的数据呀。

    def sumList(*param):
        sumNumber=0
        for val in param:
            sumNumber+=val
        return  sumNumber
    print sumList(1,2,3) 
    >>6
    
    def showList(*param):
        print param
    
    showList(1,2,3)
    >>(1,2,3)
    showList()
    >>()
    
    def showDic(**param):
        print(param)
    
    showDic(Name='Frank',Age=23)
    >>{'Age': 23, 'Name': 'Frank'}

            5. 函数的递归,递归说明白点就是函数内部自己调用自己,下面来看看通过递归来求n!

                Note: 当N<1 无值返回,所以为None

    def Fun(N):
        if(N==1):
            return 1
        elif(N>1):
            return N*Fun(N-1)
    
    print Fun(3)
    >>6
    print Fun(-1)
    >>None

       二. 函数的异常处理 : 

                 既然有函数,必定有的函数可能会出错,那如何捕获异常呢.Python中使用 try....except.....finally 来实现.

           1. 异常的类型: 【请原谅我的偷懒.】,对于实际开发中,个人认为应该是Exception用的多,其实我们更多的不会去关心是什么错,后面这些错误在程序中应该都会去通过代码避免,或者自己去自定义Exception。

     

        2. Try....Except使用.

    def Div(val1,val2):
        try:
            return val1/val2
        except ZeroDivisionError:
            return 'Error'
    
    print Div(1,0)
    >>Error

             3. 捕获多个异常,并且打印出异常. 通过Exception可以将所有异常捕获

    def Div(val1,val2):
        try:
            return val1/val2
        except (ZeroDivisionError,TypeError),E:
            return E
    
    print Div(1,0)
    print Div(1,'2')
    
    >>integer division or modulo by zero
    >>unsupported operand type(s) for /: 'int' and 'str'

         4.finally 在异常捕获的用处,不论是否有异常finally的代码段都会执行,一般用途比如在读取文件的时候可以在finally里面关闭文件流,这样就不会导致文件流不关闭,文件崩溃

    def Div(val1,val2):
        try:
            return val1/val2
        except (ZeroDivisionError,TypeError),E:
            return E
        finally:
            print("No matter whether there have error,I will Excute")
    
    print Div(1,'2')
    print Div(1,1)
    
    >>No matter whether there have error,I will Excute
    >>unsupported operand type(s) for /: 'int' and 'str'
    >>No matter whether there have error,I will Excute
    >>1

        5. 问题来了,finally既然一定都要执行,那么一个方法里面如果finally代码块里面有【返回值】,try 里面也有【返回值】,那调用该方法会获取什么数据呢.那就来看下面的代码吧.

                Note:都是返回finally的,不清楚为何有这种设计。

    def Div(val1,val2):
        try:
            return val1/val2
        except (ZeroDivisionError,TypeError),E:
            return E
        finally:
            return  'I am finally'
    
    print Div(1,'2')
    print Div(1,1)
    
    >>I am finally
    >>I am finally

         三.总结:

                 本章记录了函数的创建和基本使用。以及异常的使用. 还有很多需要后面继续学习,比如:

                1.【Python中如何抛出异常,没找到,.Net里面可以通过throw,毕竟在开发中遇到异常,有时候我们需要进一步封装异常往上层代码抛】

                2.【如何自定义异常,是类似于C#的继承Exception类吗?这个还得等后面几天把Python抽象方面的知识学了才知道】

                3.【lamba的学习,fitter,map,reduce的学习.后面应该会用专门一个博客来记录学习笔记.】

        

      

        

      

        

  • 相关阅读:
    存储过程
    Apache服务器
    SpringMVC (<context:include-filter>和<context:exclude-filter>的使用)
    虚拟机centos 同一个tomcat、不同端口访问不同的项目
    CentOS系统下搭建tomcat服务器
    nginx配置负载均衡
    配置plsql远程连接oracle数据库
    Nginx安装
    Centos6.5系统关闭防火墙
    禁止Centos7系统yum自动下载更新
  • 原文地址:https://www.cnblogs.com/FourLeafCloverZc/p/4260769.html
Copyright © 2011-2022 走看看