# python学习笔记(二)--函数和异常处理
来源:互联网 发布:小学生课外阅读软件 编辑:程序博客网 时间:2024/05/15 23:51
函数
回顾return
return作为一个返回值 可以将函数内部我想要返回的值 进行返回 如果有返回值的函数 在调用的时候不会有任何的输出 需要使用输出函数进行输出
如果在函数中 遇到了return那么return下面的代码 将不会在执行 也就是说 遇到了return认为函数已经执行完毕
一变量的作用域
(1)全局变量
在函数外部声明的变量为全局变量, 在函数内外部都可以获取到name = '张三'myList = ['x', 'y']def demo(): print(name) print(myList)demo()
(2)局部变量
在函数外部声明为全局变量, 在函数内外部都可以获取到# 局部变量 在函数外部获取不到def demo(): name = '张三' myList = ['x', 'y']demo()print(name) # name 'name' is not definedprint(myList)
(3)关键字global声明函数内外使用同一个变量
name = '张三'def demo(): global name print(name) name = '李四'print(name)demo()print(name)
(4)关键字nonlocal
在函数嵌套的时候 可以获取外层函数的变量 函数内外部都使用的同一个变量def demo1(): num = 1 def demo2(): # print(num) nonlocal num num = 2 demo2() print(num)demo1()
(5)可变类型 不可变类型
可变类型: 比如列表 你只是修改了列表中的某一个值 但是本省没有动不可变类型: 比如字符串, int当你在给一个新的值得时候 那么原来的值会被丢弃 那么原来的值会被丢弃那么回生成一个新变量myList = ['a', 'b', 'c', 'd']myInt = 3def demo(): myList[0] = 'f' myInt = 10demo()print(myList) # 可变类型内外使用都已一样 不需要加globalprint(myInt)
二递归函数
递归函数就是自己调用自己的过程
优点:代码简短
缺点:代码不好维护 大量消耗cpu
def demo(n): print(n) if n > 1: demo(n - 1) print(n)# demo(5)# 分开的写法def func1(n): print(n) func2(n - 1) print('func1', n)def func2(n): print(n) func3(n - 1) print('func2', n)def func3(n): print(n) print('func3', n)func1(3)
三 特殊的问题
a = 10def demo(): a = a + 1等同于:a = 10def demo(): print(a) a = 10demo() # local variable 'a' referenced before assignment
四 函数的导入
# import myfunc.returnfunction# print(myfunc.returnfunction.demo(10, 20))# from myfunc import returnfunction # 从myfunc的文件夹中导入returnfunction# print(returnfunction.demo1(10, 20, 30))# from myfunc import returnfunction as func # 从myfunc文件夹导入# # returnfunction as func 起别名# print(func.demo1(10, 20, 30))import random as ranran.randint(1, 10)
五列表推导式
概念:
列表推导式提供了创建列表的简单途径
简单的列表
myList = [x for x in range(1, 5, 2)]
带if过滤的
# 偶数myList1 = [x for x in range(1, 50) if not(x % 2)]# 小于30的偶数myList2 = [x for x in myList1 if x < 30]# 把列表中小于30的数 依次加1myList2 = [i+1 for i in myList1 if i < 30]print(myList2)
列表的嵌套:
lis = []for i in range(1, 11): for x in range(1, 4): lis.append([i, x]) print(lis)
六迭代器
可迭代对象
可以直接作用于for循环的对象称为可迭代对象(Iterable)可以使用isinstance判断是否为可迭代对象
可用于for循环的数据类型
list string dict set tuple
判断是否为可迭代对象需要引入Iterable进行判断
from collections import Iterable# 判断是否为可迭代对象print(isinstance([], Iterable))print(isinstance({}, Iterable))print(isinstance('', Iterable))print(isinstance(1, Iterable))
迭代器
- 迭代器是从对象的第一个元素开始访问, 只能前进 不能后退
- 迭代器由两个方法iter() next() (iter是将可迭代器对象转换成迭代器, next是可以将迭代器的元素一个一个访问)
- 当迭代器的元素都访问以后 再次访问会报StopIteration的错误
七生成器
使用yield函数称为生成器
生成器也是先了迭代器的功能
使用列表生成式 这样生成出来的(x for x in range(1, 5))是生成器 并不是像列表一样一个一个的生产 而是用一个 产一个
使用(x for x in range(1, 5))创建列表的好处
节约资源# 对比节约资源# myGener = (x for x in range(100000))# print('就是这么速度')myGener = [x for x in range(100000)]print('你在看看我的速度')
加上yield的函数(调用一次 执行一次 避免一次性全部执行完毕 节约电脑资源)
配合
yieldnext()def demo(): print('a') yield print('b') yield print('c') yielddef func(): for i in range(100): print(i) yieldmyGen = func()next(myGen)next(myGen)
八异常处理
- 需求: 当程序出现问题时不让程序结束 而是越过错误继续执行
- 一个try语句可以包含多个except子句 分别来处理不同的异常 最多只是一个分支会执行
- 一个except子句可以包含多个异常 这些异常的名称放在括号里 或者称为元组里
主体结构
try: # 可以会发生异常的代码except: # 处理出现的异常
(1)捕获一个特定的异常处理
# 捕获一个错误的异常处理try: 1 + 'a'except TypeError as e: print(e)
(2)一个try语句对应多个except子句
# 一个try语句对应多个except子句try: # 1 + 'a' int('a')except TypeError as e: print(e)except ValueError as v: print(v)
(3)一个except子句 捕获特定的n个异常
# 一个except 字句 捕获特定的n个异常try: # 1 + 'a' int('a')except (TypeError,ValueError) as e: print(e)
(4)可选的else字句
如果想使用else子句, 必须放在except之后 这个子句将在try语句没有任何异常的时候去执行
格式:
try: ……except: ……else: ……try: # 1 + 'a' # int('a') 1 + 1except (TypeError,ValueError) as e: print(e)else: print('只有在没有任何异常的情况下,才能看到我')
(5)finally
finally子句 有没有异常 都会去执行# 配合finally语句的执行try: # 1 + 'a' int('a') # 1 + 1except (TypeError,ValueError) as e: print(e)else: print('只有在没有任何异常的情况下,才能看到我')finally: print('你有没有异常我都执行')
阅读全文
0 0
- # python学习笔记(二)--函数和异常处理
- Python 学习笔记(二):时间,函数,异常,面向对象
- (windows编程 学习笔记二) 结构化异常处理(异常处理程序和软件异常)
- Python学习17:异常处理(二)
- 异常处理 学习笔记(二)
- Python学习笔记(4)--异常处理
- python学习笔记(九)异常处理
- Python学习笔记--异常处理
- Python学习笔记--异常处理
- Python学习笔记--异常处理
- Python学习笔记 异常处理
- Python异常处理学习笔记
- Python 学习笔记 -- 条件判断、循环和异常处理
- python自然语言处理-学习笔记(二)
- 《Python自然语言处理》学习笔记(二)
- Python学习笔记(八):Python 异常处理
- Python学习笔记(八)——Python 异常处理
- Python 异常处理 (二)
- leetcode 215. Kth Largest Element in an Array
- [境内法规]中国人民银行反洗钱调查实施细则(试行)—银发[2007]158号
- Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. > com.android.bui
- Choreographer 源码阅读笔记
- Ubuntu下Kubernetes源码编译
- # python学习笔记(二)--函数和异常处理
- 启动第三方应用时弹出仿touch悬浮按钮以退出第三方应用,返回launcher界面
- Awesome Vue.js vue.js学习资源链接大全 英文
- [POJ 1201] Intervals 差分约束系统
- 防不胜防!信用卡申请不当后果竟然这样 。。
- apache的介绍
- [agc019f]Yes or No
- 算法实现Java之选择排序
- Split String