新开课day14总结

高级函数补充:

filter:筛选出符合

  • 语法:filter(函数,序列)

  • 函数的要求:

    • 有一个参数(元素)
    • 返回值写留下来的条件

案例:

def fun(x):
    return x%2==0
list1 = [12,32,34,32,33,43,53]
print(list(filter(fun,list1)))#[12, 32, 34, 32]

模块

1.什么是模块

  • python中一个py文件就是一个模块

2.如何在一个模块中取使用另外一个模块中的内容

前提:

需要被别的模块使用的模块的模块名必须符合变量名的要求

  • 导入模块:模块里面的内容必须要先导入再使用

3.怎么导入模块

方法:

  • 直接导入:import 模块名:导入指定模块,可以通过模块名.xxx的方式使用这个模块中的全局变量
  • from 模块名 import 变量1,变量2,变量3,…:导入后可以直接使用指定的变量
  • from 模块名 import *:导入指定模块,导入后可以使用当中所有变量
  • import 模块名 as 新模块名:对模块命名
  • from 模块名 import 变量1 as 新变量1,变量2 as 新变量2:对模块重命名

test1是我创建的py文件,如下

a = '张三'
b = 90
def fun_test(x):
    return x

案例1:import 模块名,

import test1
print(test1.a)
print(test1.fun_test('我爱你'))

案例2:

from test1 import a,fun_test
print(a)
print(fun_test('我爱你'))

案例3:

from test1 import *
print(a)
print(fun_test('i love you'))

案例4:

from test1 import fun_test as f_t
print(f_t('我爱你'))

案例5:

import test1 as t1
print(t1.a)
print(t1.fun_test('不爱你'))

导入模块原理

1.不管是import还是from import导入模块的时候,系统都会自动进入指定的模块,将模块中的

代码全部执行一遍。

但是当我们仅仅只想要一个方法时,模块中代码还是都执行,因此,提出问题:是否有方法可以

使得只让当前需要的模块部分执行。

2.阻止导入

导入模块的时候,不让模块中的所有代码都执行,只执行需要执行的部分。

阻止的方法:

  • 在被导入的模块中添加main对应的if语句,把不希望被别的模块执行的代码放到if语句里面:if _name_ == ‘__main__’:

注意:

  • 同一个模块如果导入多次,模块中的代码只会执行一次(自动查重)

  1. 什么是包
  • python中将包好了_init_.py文件的文件夹叫做包,他是专门拿来管理模块的。
  1. 怎么使用包中模块的内容

前提:

  1. 先在包中创建文件one.py,写入:
a = '张三'
b = 90
def fun_test(x):
    return x
  1. 同时在名为:_init_.py文件中写入:
c = 1212
def fun(x):
    return x

导入方式:

  1. import 包名:直接导入包,导入后可以用‘包名.xxx’去使用包中_init_.py文件中的所有全局变量
import day14_pack
print(day14_pack.c)
  1. import 包名.py文件 :导入包中指定的模块,导入后可以用’包名.模块名. xxx.'去使用指定模块中的所有的全局变量
import day14_pack.one as ts
print(ts.a)
print(ts.fun_test('我爱你'))
  1. from 包名 import 文件名
from day14_pack import one
print(one.a)
print(one.fun_test('思念'))
  1. from 包名.文件名 import 变量1,变量2
from day14_pack.one import a,fun_test
print(a)
print(fun_test('想念'))

异常捕获

异常:程序执行过程中报的错就是异常,如果程序执行过程中出现了异常,程序会崩溃,不会再执行后面的代码

异常捕获:让程序出现异常时不崩溃,还能接着执行

  • 异常捕获的场景:程序员知道某个位置可能会出现异常(出现异常的原因不是代码本身的问题,而是使用者操作不当等原因),但是又希望在出现异常的时候程序不崩溃还可以接着往后执行,这个时候才需要进行异常捕获。

语法:

  1. 捕获任何异常

    执行过程:先执行代码段1,如果代码出现异常不会报错,而是马上执行代码段2,如果代码段1没有出现异常,代码段2不执行

try:
    pass#代码段1
except:
    pass#代码段2
  1. 捕获指定的异常
try:
    pass#代码段1
except 异常类型:
    pass#代码段2
  1. 捕获多种错误异常:针对不同异常做相同处理
try:
    pass#代码段1
except (异常类型1,异常类型2....):
    pass#代码段2
  1. 捕获多种错误异常:针对不同异常做不同处理
try:
    pass#代码段1
except:
    pass#代码段2
except:
    pass#代码段3
except:
    pass#代码段4
....

异常捕获完整结构:

try:
    pass#代码段1 (需要捕获异常的代码)
except:
    pass#代码段2 (捕获到异常后执行的代码)
else:
    pass#代码段3 (如果没有捕获到异常将会执行的代码)
finally:
    pass#代码段4 (无论有没有出现异常,也不管异常有没有捕获到,都会执行的代码)

抛出异常

作用:主动让程序报错、崩溃

语法:raise 异常类型

案例:

#自定义异常类型
class age_error(Exception):
    def __str__(self):
        return 'Age ERROR'
age = int(input("enter age:"))
if age<0 or age>150:
    raise age_error
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值