2、python基础

来源:互联网 发布:怎么用php写软件 编辑:程序博客网 时间:2024/06/14 07:19

Python 基础教程
demo


1、字典原本没有顺序


20%


2、判断定位元素超时

from time import sleepz=Truefor i in range(10):    if z:        print('break')        break    else:        print('sleep1')        sleep(1)else:    print('time out')
  • 如果z=True,执行break跳出程序——- 用于定位元素成功

  • 如果z=False,执行sleep(1)10次后,执行“time out”——-用于定位元素失败

sleep1sleep1sleep1sleep1sleep1sleep1sleep1sleep1sleep1sleep1time out      

3、内部注释


4、类 & 方法(self) = 函数

  • 三种方法相同
class Count:class Count():class Count(object):     #建议使用
class Count:    def add(self,a,b):    #类下面的方法第一个参数,一定要写self        return(a+b)c=Count()                 #调用类时,一定要加()print(c.add(1,2))
  • 构造方法
class Count:                     #(家庭  钱)  父类    def __init__(self,a,b):      #初始化方法,类的参数   self = 存在的空气  (爸爸)        self.aa = a               #(爸爸私有挣得钱,放入家庭公用财产)        self.bb = b               #(爸爸私有挣得钱,放入家庭公用财产)    def son(self):                #(儿子)        money = 10        return money    def add(self):                #(妈妈)        money = self.son()        #self = 类的前缀   (妈妈使用儿子的钱)        print(money)        return self.aa+self.bb    #(妈妈使用家庭公用财产)class NewCount(Count):            #继承Count父类     子类    def __init__(self,a,b,c):      #重写父类        Count.__init__(self,a,b)   #继承父类初始化方法        self.cc = c    def sub(self):                #不带参数        return self.aa-self.bb    '''    def sub(self,m,n):            #带参数        return m-n    '''c=Count(1,2).add()               #因初始化方法含有类的参数,调用类时一定要传参print(c)Newc = NewCount(4,5,6)print(Newc.add())print(Newc.sub())'''print(Newc.sub(9,3)) '''

5、引包

import timeprint(time.time())    #需要写time前缀from time import time,sleep,ctime   print(sleep(1))       #省略time前缀from time import *    # *代表time模块的所有方法print(ctime(1))       #省略time前缀
  • 自己定义的方法名 和 系统自带方法名相同,优先执行自己定义的方法名
from time import sleep as sys_sleep  #重命名,与自定义sleep区分开,也适用于若方法名很长,重命名简写一点def sleep(a):    print("my def sleep"+str(a))sleep(11) sys_sleep(1)   '''输出my def sleep11'''
  • 调用同目录下其他文件方法

import class_demo              #调用其他文件中方法result = class_demo.add(7,8)   #不能使用调用文件下,类中的方法,可以使用其函数print(result)
  • 同级目录下调用

#import_count.pyfrom count import add        #引用count.py文件下的add函数if __name__ == '__main__':    result = add(3,5)         #使用count.py文件下的add函数    print(result)
  • 引用跨一级模块(目录)下文件

#import_count.pyfrom module.count import add        #引用module模块下,count.py文件的add函数if __name__ == '__main__':    result = add(3,5)         #使用count.py文件下的add函数    print(result)
  • 跨目录多级调用
    import_count.py—->new_count.py—->count.py里的add方法

      __init__.py表示module模块是标准文件,这样程序运行时才不报错
  • python的引包顺序

 import count

1. 看当前目录下有没有count文件或目录
2. python安装lib目录下找count文件或目录
3. 环境变量path中添加的目录下找count文件或目录

# module/new_count.pyfrom count import add       # 相对引用def new_add(a,b):           #同级目录下,new_count.py调用count.py下add函数    c=add(a,b)    return cif __name__ == '__main__':    print(new_add(1,1))
# import_count.pyimport sys                                 #(顺序很重要)sys.path.append("./module")                #环境变量path添加module模块路径from module.new_count import new_add        #引用module模块下,count.py文件的add函数if __name__ == '__main__':    result = new_add(3,5)                    #使用count.py文件下的add函数    print(result)
  • 不同子目录下调用

    tesecase/import_count.py—->module/new_count.py—->module/count.py文件下的add函数

# module/new_count.pyfrom .count import add       # 注意这里.count需要加.def new_add(a,b):           #同级目录下,new_count.py调用count.py下add函数    c=add(a,b)    return cif __name__ == '__main__':    print(new_add(1,1))
# testcase/import_count.pyimport os,sysparentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))sys.path.insert(0,parentdir)                #不同子目录下调用,固定写法sys.path.append("./module")                #环境变量添加module模块路径from module.new_count import new_add        #引用module模块下,count.py文件的add函数if __name__ == '__main__':    result = new_add(3,5)                    #使用count.py文件下的add函数    print(result)

6、异常

Python 异常处理

Python常见异常类型大概分为以下类:

  1. AssertionError:当assert断言条件为假的时候抛出的异常

  2. AttributeError:当访问的对象属性不存在的时候抛出的异常

  3. IndexError:超出对象索引的范围时抛出的异常

  4. KeyError:在字典中查找一个不存在的key抛出的异常

  5. NameError:访问一个不存在的变量时抛出的异常

  6. OSError:操作系统产生的异常

  7. SyntaxError:语法错误时会抛出此异常

  8. TypeError:类型错误,通常是不通类型之间的操作会出现此异常

  9. ZeroDivisionError:进行数学运算时除数为0时会出现此异常

  • 捕捉异常类型

    • 有针对性异常,提前知道是什么类型错误
    • 自己写异常提示,返回结果
    • 发现文件不存在时,应该做什么处理。如:设置元素等待,判断元素是否等待
try:    print(i)except NameError as e:      #NameError异常    print(e)    #pass'''  输出name 'i' is not defined   '''
try:    open("abc.txt","r")except FileNotFoundError as e:       #FileNotFoundError异常    print(e)    #raise e'''  输出[Errno 2] No such file or directory: 'abc.txt'   '''
  • try….except…else类型
try:    print(i)except NameError as e:    print("有异常")else:    print("没有异常")''' 结果:有异常  '''
  • try-finally
    语句无论是否发生异常都将执行最后的代码。
    如:执行数据库,不管有没有异常,都要关闭数据库。以防影响后面的执行
try:    print("333")except NameError as e:    print("有异常")finally:    print("不管有没有异常,都执行")''' 333不管有没有异常,都执行'''
  • try-except-else-finally
try:    print("333")except NameError as e:    print("有异常")else:    print("没有异常")finally:    print("不管有没有异常,都执行")
  • 使用except而不带任何异常类型
    • 这种方式try-except语句捕获所有发生的异常。但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息。因为它捕获所有的异常。
try:    正常的操作   ......................except:    发生异常,执行这块代码   ......................else:    如果没有异常执行这块代码
  • 使用except而带多种异常类型
    也可以使用相同的except语句来处理多个异常信息
try:    正常的操作   ......................except(Exception1[, Exception2[,...ExceptionN]]]):   发生以上多个异常中的一个,执行这块代码   ......................else:    如果没有异常执行这块代码