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

   一.函数:

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

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

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,'') >>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,'')
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,'')
print Div(1,1) >>I am finally
>>I am finally

    三.总结:

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

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

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

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

    

  

    

  

   

.Net程序员之Python基础教程学习----函数和异常处理[Fifth Day]的更多相关文章

  1. .Net程序员之Python基础教程学习----列表和元组 [First Day]

    一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...

  2. .Net程序员之Python基础教程学习----判断条件与循环[Fourth Day]

        今天学习Python的判断条件与循环操作. 一. 布尔变量: 在学习判断条件之前必须的了解bool变量,在Python中bool变量与C语言比较类似,与.net差别比较大,其中下面集中情况需要 ...

  3. .Net程序员之Python基础教程学习----字典的使用 [Third Day]

      今天学习了字典的使用, 所谓的字典其实就是键值对数据, 一个字典里面有唯一的Key对应一个value,Key是唯一的,Value不唯一. 在.net添加相同的Key会报错,在Python,若出现相 ...

  4. .Net程序员之Python基础教程学习----字符串的使用 [Second Day]

         在The FirstDay 里面学习了列表的元组的使用,今天开始学习字符串的使用.字符串的使用主要要掌握,字符串的格式化(C语言中我们应该都知道,Python和C语言差别不大),字符串的基本 ...

  5. Python基础教程学习笔记:第一章 基础知识

    Python基础教程 第二版 学习笔记 1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入“p ...

  6. 【学习笔记】Python基础教程学习笔记

    教程视频网盘共享:http://pan.baidu.com/s/1hrTrR5E 03-python基础.if判断 print 输出数据 print("hahahah")----- ...

  7. Python基础教程学习(四)类的创建与继承

    类中可以有方法,类外也可以有函数,其实类就是一种封装, Python中可以自己定义一个函数,一可以把这个函数在类中封装成一个方法, 其中的属性和方法自然就从父类中继承来了, 要想获得多个类的属性和功能 ...

  8. Python基础教程学习(三)

    如何定义类 class ClassName(base_class[es]): "optional documentation string" static_member_decla ...

  9. Python基础教程学习笔记:第二章 列表和元组

    1.序列中元素的索引: 第一个元素索引是0,第二个是1,依次递增 最后一个元素索引是-1,倒数第二个是-2,依次递减 2.序列(Sequence)的种类: 列表(list).元组(tuple).字符串 ...

随机推荐

  1. Linux学习历程(持续更新整理中)

    1.文件目录操作命令 (1) ls   显示文件和目录列表 a ls -l  显示文件的详细信息 b ls -a 列出当前目录的所有文件,包含隐藏文件. c stat '目录/文件'   显示指定目录 ...

  2. jQuery10种不同动画效果的响应式全屏遮罩层

    遮罩层有很多今天介绍这个jQuery10种不同动画效果的响应式全屏遮罩层 效果预览 下载地址 实例代码 <div class="container"> <head ...

  3. 你可能不需要 jQuery!使用原生 JavaScript 进行开发

    很多的 JavaScript 开发人员,包括我在内,都很喜欢 jQuery.因为它的简单,因为它有很多丰富的插件可供使用,和其它优秀的工具一样,jQuery 让我们开发人员能够更轻松的开发网站和 We ...

  4. go语言 类型:数组

    在go语言中数组array是一组特定长度的有序的元素集合. go的数组类型由两部分组成——类型和长度,二者缺一不可.数组本来就是一块存储相同类型元素的连续内存空间,因此决定一个数组的类型,必然需要决定 ...

  5. swift学习笔记之-属性

    //属性 import UIKit //属性(Properties)详解 /* 存储属性(Stored Properties):类.结构体中,不能在枚举中 计算属性(Computed Properti ...

  6. Spring------概述

    Spring框架------概述: spring是j2ee应用程序框架,是轻量级的IOC和AOP的容器框架,主要是针对JAVABean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts ...

  7. iOS之属性修饰符 retain、strong和copy区别测试

    时不时会有点迷惑属性修饰符retain.strong.copy三者之间的区别,还是把测试过程记录下来好一点! 1.属性修饰符结论 2.给retain.strong.copy修饰的字符串属性赋值指针变化 ...

  8. 通过settings.db自定义Android系统默认设置

    Android的系统设置数据存放在/data/data/com.android.providers.settings/databases/settings.db 中 数据库结构如下: 数据库中的默认数 ...

  9. IOS整体项目层级构建

    在创建IOS项目时,若有一个比较明确的层级架构,将对于今后代码的维护或者功能的扩展很有帮助:本文将通过一个实例来展现我对于层级的一些观点:里面有一些零碎的知识点可能无法全部介绍,到时提供源代码进行下载 ...

  10. ios 返回指定导航控制器

    UINavigationController *navigationVC = self.navigationController; NSMutableArray *viewControllers = ...