Python教程

python基础

本文主要是介绍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)
这篇关于python基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!