python之地基(四)

一、python内的名称空间及作用域

  #内置名称空间:(python启动时就有)python解释器内置的名字,print,max,min

  #全局名称空间:(执行python文件时启动)定投定义的变量

  #局部名称空间:(调用函数时启动,调用结束失效)函数内部定义的变量

  总结:三者的加载顺序
  内置--->全局--->局部

  三者的访问顺序
  局部--->全局--->内置

  在函数体内时,先访问函数体内的,如果没有向上一级(上一级函数或者全局)查找,还是没有的话就去内置里面去查找。

 

x=4
defa():
    x=3
    defb():
        x=2
        defc():
            x=1
            print(x)
        c()
    b()
a()
‘‘‘
如上述代码所示,
执行结果为1,如果x=1不存在,
那么向上一级寻找答案,那么得出结果为2.
’’’
示例  

二、异常处理

  什么是异常?

  异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。

  一般情况下,在python无法正常处理程序时就会发生一个异常。

  异常时python对象,表示一个错误

  当python脚本发生异常时我们需要捕获处理它,否则程序会中止执行。

 

  异常处理:

  捕获以后才能可以使用try/except语句。

  try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理

  如果你不想在异常发生时结束,你的程序,只需在try里捕获它。

 

==========================================================
try:
    print(a)
except:
    print('错误')
finally:#不管代码成功与否都执行finally的代码块
    print('执行完毕')


==========================================================
try:
    print(a)
except NameError:#捕捉错误类型
    print('变量没定义')  #打印出来的是括号里的

==========================================================
try:
    print(a)
except NameError as e:#捕捉原生错误
    print(e)

===========================================================

处理多个异常
try:
    print(a)
    int('aaa')
except NameError as e1:
    print(e1)
except ValueError as e2:
    print(e2)
==========================================================
自定义异常
Class MyError(Exception):
    def__init__(self,age):
        self.age=age
def ag():
    age=int(input('输入年龄:'))
    if age<=0orage>100:
        raise MyError('年龄只能在0到100岁之间')
try:
    ag()
except MyError as e:
    print(e)

 三、文件处理

 

#在python3中如何打开一个文件呢?
f = open('lock.txt', 'r',encoding='utf-8')#应用程序向操作系统发起打开文件的操作
print(f.read())#操作系统打开文件得到文件句柄返回给应用程序并赋值给f
f.close()#应用程序向操作系统发起关闭文件的信号,并且回收变量f

#注意:操作完文件后一定要记得关闭,因为如果开的文件多了,不关闭,会浪费系统资源,使系统变慢
#但是还是有很多同学忘记关闭文件,因此,可以用下面这个方式
with open('lock.txt', 'r', encoding='utf-8') as f:
print(f.read())

#这里要注意字符编码,秉承一个原则就不会出现乱码(用什么方式写的,就用什么方式打开)

r ,#只读模式【默认模式,文件必须存在,不存在则抛出异常】
w,#只写模式【不可读;不存在则创建;存在则清空内容】
a, #之追加写模式【不可读;不存在则创建;存在则只追加内容】
#以下三种跟上面三种一样,只不过是以二进制方式
rb 
wb
ab

文本打开的常用模式

r,w,a
r,a,w

操作文件的方法
#掌握
f.read() #读取所有内容,光标移动到文件末尾
f.readline() #读取一行内容,光标移动到第二行首部
f.readlines() #读取每一行内容,存放于列表中

f.write('1111\n222\n') #针对文本模式的写,需要自己写换行符
f.write('1111\n222\n'.encode('utf-8')) #针对b模式的写,需要自己写换行符
f.writelines(['333\n','444\n']) #文件模式
#了解
f.readable() #文件是否可读
f.writable() #文件是否可读
f.closed #关闭文件
f.flush() #立刻将文件内容从内存刷到硬盘
f.name #查看打开的文件名

操作文件的方法

view code

f.seek(0,0)等价于f.seek(0)#代表把光标移动到开头

f.seek(2,1)#代表在相对位置移动2个字节(1代表光标的相对位置,2代表在相对位置上把光标向后移动2个字节)

f.seek(-3,2)#代表在末尾往前移动3个字节(2代表把光标移动到末尾,-3代表把光标向前移动3个字节)

f.read(3)代表读取3个字符(意思是光标在第三个字节后面)

光标位置移动

光标移动
移动光标

 

posted @ 2019-06-05 10:12  月羲  阅读(157)  评论(0编辑  收藏  举报