ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python基础

2022-04-21 09:02:11  阅读:138  来源: 互联网

标签:执行 python 基础 datetime 进程 线程 print now


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,基础,datetime,进程,线程,print,now
来源: https://www.cnblogs.com/MrFlySand/p/16172678.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有