• python基础


    import os
    
    # 打开画图工具
    os.system("C:\Windows\system32\mspaint.exe")
    
    # 修改文件名
    os.rename(r"E:\Code\a.txt",r"E:\Code\b.txt")
    
    # 读取文件
    file=open(r"E:\Code\test.txt")
    print(file.read())
    file.close() # 文件操作完毕后,一定要关闭文件IO资源
    

    类和继承

    class Animal(object):
        def __init__(self, color):
            self.color = color
        def eat(self):
            print("动物在吃!")
        def run(self):
            print("动物在跑")
    
    class Cat(Animal):# Cat类继承Animal类
        pass
    cat = Cat("黄色")
    
    print(cat.color)
    print(cat.eat)
    
    
    class Dog(Animal):
        def __init__(self, name, age):
            self.name = name
            self.age = age
        def eat(self):
            print("狗在啃骨头!")
    
    dog = Dog("小黑", 10)
    print(dog.eat()) # 有子类,输出子类的值 
    print(dog.run()) # 没有子类,输出父类的值 
    

    8-1异常

    • 我们都知道分母不能为0,所以3/a[2]=a/0就会出现错误。当没有try时,代码就会停止运行。而try except表示有错误时还是会继续执行,e表示错误语法。
    a = [12, 43, 0, 46, "a", 76]
    for i in a:
        try: #写可能会报错或出现异常的代码
            print(3/i)
        except Exception as e: #捕获try语句的异常e,except无论语法是否错误都会执行
            print("出现错误,错误是:",e) #出现异常时执行的语句
        else:
            print("正常") #没有异常时执行的语句
        finally:
            print("结束") #无论是否有异常,都会执行的语句(每次都会执行)
    

    8-2常见错误和异常

    • NameError:这是比较常见的一个错误,就是没有定义变量就把它拿来用。
    • SyntaxError:这是语法错误,少了个冒号,没有空格等,都会出现这个错误。
    • I0 Error:在做文件操作的时候常遇到的错误,例如文件操作的时候文件不存在。
    • qZeroDivisionError:在做数据处理和计算的时候会遇到这种错误就是除数是0。
    • IndentationError:这是新手常遇到的一种错误,就是缩进问题啦。

    8-3抛出自定义异常

    • pwd不符合if条件,所以会输出异常的行数
    pwd = "123456"
    if len(pwd) < 8:
        ex = Exception("密码不能低于8位数!")
        raise ex #抛出异常
    else:    
        print("密码错误")
    

    11-1进程

    • 程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程则是在处理机上的一次执行过程,它是一个动态的概念。这个不难理解,其实进程是包含程序的,进程的执行离不开程序,进程中的文本区域就是代码区,也就是程序。
    • 进程就是一段程序的执行过程。 它是一个具有-定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
    • 简单的来讲进程的概念主要有两点:第一,进程是一个实体。 每一个进程都有它自己的地址空间,一般情况下,包括文本区域(textt2region)、数据区域(data region) 和.堆栈(stack region) 。文本区域存储处理器执行的代码:数据区域存储变量和进程执行期间使用的动态分配的内存,堆栈区域存储着活动过程调用的指令和本地变量。第二二 ,进程是一个“执行中的程序”。程序是-个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。
    • 进程有三个状态,就绪、运行和阻塞。
      • 就绪态:其实就是获取了除gpu外的所有资源,只要处理器分配资源就可以马上执行。
      • 运行态:获得了处理器分配的资源,程序开始执行。
      • 阻塞态:当程序条件不够时候,需要等待条件满足时候才能执行,如等待i/o操作时候,此刻的状态就叫阻塞态。
    • 进程与线程的区别
      进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
      1)简而言之,一个程序至少有一个进程,一个进程至少有一个线程.
      2)线程的划分尺度小于进程,使得多线程程序的并发性高。
      3)另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
      4)线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
      5)从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区

    11-3多线程

    • Python的标准 库提供了两个模块:_thread和 threading,_thread是低级模块,threading是高级模块,对thread进行了封装。绝大多数情况下,我们只需要使用threading这个高级模块。
    • 启动一个线程就是把一个函数传入并创建Thread实例,然后调用start()开始执行。最后执行的时候大约为5秒。
    import imp
    import threading
    import time
    def run(name):
        print(name,"线程执行了")
        time.sleep(5)
    
    #创建线程
    t1 = threading.Thread(target=run, args=("001",))
    t2 = threading.Thread(target=run, args=("002",))
    
    #启动线程
    t1.start()
    t2.start()
    

    11-8实例-景区卖票

    import threading
    lock = threading.Lock()
    num = 100
    
    # 卖票
    def sale(name):
        lock.acquire() #线程锁
        global num
        if num > 0:
            num = num - 1
            print("卖出一张票,还剩",num,"张!")
        lock.release() #释放锁
    
    # 售票窗口(2个线程表示)
    while 1==1:
        if num > 0:
            ta = threading.Thread(target=sale,args=("A窗口",)) #线程a
            tb = threading.Thread(target=sale,args=("B窗口",)) #线程b
            ta.start() #启动线程a
            tb.start()
        else:
            break
    print("票已经卖完!")    
    

    13-1日期和时间类型

    • 获取当前的日期:datetime.datetime.now(),得到的日期2022-03-31 10:33:37.952499
    • 获取当前的年、月、日、时、分、秒
      • 年:year = datetime.datetime.now().year
      • 月:month = datetime.datetime.now().month
      • 日:day = datetime.datetime.now().day
      • 时:our = datetime.datetime.now().hour
      • 分:minute = datetime.datetime.now().minute
      • 秒:second = datetime.datetime.now().second
    • 获取一个指定日期:datetime.datetime(年, 月, 日, 小时, 分钟, 秒)
    • 日期转字符串:datetime.datetime.now(),获取现在的时间。注意%Y-%m-%d %H:%M:%S区分大小写
    • 字符串转日期:datetime.datetime.strptime(字符, 日期格式)%Y-%m-%d %H:%M:%S和上面s的字符对应,%Y读取年份...
    import datetime
    # 获取当前的日期
    now = datetime.datetime.now()
    print("now:",now)
    
    # 获取当前的年、月、日、时、分、秒 
    year = datetime.datetime.now().year
    month = datetime.datetime.now().month
    day = datetime.datetime.now().day
    hour = datetime.datetime.now().hour
    minute = datetime.datetime.now().minute
    second = datetime.datetime.now().second
    print("year:",year,"\tmonth:",month,"\tday:",day)
    print("hour:",hour,"\minute:",minute,"\tsecond:",second)
    
    # 获取一个指定日期
    d = datetime.datetime(2022, 3, 31, 8, 30)
    print("d:",d)
    
    # 日期转字符串
    now = datetime.datetime.now() #获取现在的时间
    d = now.strftime("%Y-%m-%d %H:%M:%S") 
    print("now:",now,"\td:",d)
    
    # 字符串转日期
    s = "2022-3-31 10:31:00"
    d = datetime.datetime.strptime(s, "%Y-%m-%d %H:%M:%S")
    print("d:",d,"\t类型:",type(d))
    

    13-2json

    # json
    # {key:value, key:value}
    
    import json 
    # json转字典
    j = '{"city":"北京", "name":"熊猫"}'
    print("type:",type(j),"\tj:",j)
    p = json.loads(j)
    print("type:",type(p),"\tp:",p)
    
    # 字典转json
    dict = {"city":"北京", "name":"熊猫"}
    s = json.dumps(dict, ensure_ascii=False)
    print("type:",type(s),"\ts:",s)
    

    13-3编码和解码

    • py3中字符串的两种类型,bytes,str。str存储unicode类型,bytes存储byte类型。
    # 编码
    a = "我爱中国" # 默认是unicode类型
    byte = a.encode("utf-8") #字符串转byte称为编码
    print(byte)
    
    # 解码:byte转字符串(unicode)
    str = byte.decode("utf-8") #注意编码方式和解码方式要一致
    print(str)
    
  • 相关阅读:
    iOS uitableView响应事件被拦截
    《数据结构、算法与应用》8.(顺序查找数组中第一个出现指定元素的位置)
    Codeforces 475B Strongly Connected City 强连通裸题
    hdu1501&amp;&amp;poj2192 Zipper(DFS)
    hdu 4031 Attack(树状数组区间更新单点求值&amp;暴力)
    Bash Shell 流程控制 —— select
    Longest Valid Parentheses
    HDU 2955 Robberies
    浅谈 Objective-C Associated Objects
    浅谈 Objective-C Associated Objects
  • 原文地址:https://www.cnblogs.com/MrFlySand/p/16172678.html
Copyright © 2020-2023  润新知