zoukankan      html  css  js  c++  java
  • 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 222 ') #针对文本模式的写,需要自己写换行符
    f.write('1111 222 '.encode('utf-8')) #针对b模式的写,需要自己写换行符
    f.writelines(['333 ','444 ']) #文件模式
    #了解
    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个字符(意思是光标在第三个字节后面)
    
    光标位置移动
    
    光标移动
    移动光标
  • 相关阅读:
    Spark RDD操作(1)
    scala学习笔记(8): 列表的map,flatMap,zip和reduce
    (转)hadoop基本操作命令
    Mac下配置环境变量
    Spark快速入门(1)
    urllib2 request 模拟伪装浏览器
    linux下面Zookeeper的单机模式(standalone)
    linux redis安装
    python OCR 图形识别
    mysql 、慢查询、到底如何玩
  • 原文地址:https://www.cnblogs.com/Amrice/p/10910406.html
Copyright © 2011-2022 走看看