草庐IT

基础数据类型之字典

1.字典的定义使用{}定义字典,括号内用逗号分隔开多个key:value,其中value可以是任意类型,但是key必须是不可变类型且不能重复,是无序的!info=[['name','zhang'],('age',19)['gender','男']]d={}#第一种方式定义d=dict(x=1,y=2)#第二种,dict里面也可以穿一个infodict(info)的工作原理等同于:d={}info=[['name','zhang'],('age',19)['gender','男']]forx,yininfo:d[x]=y2.字典的作用存放多个无序的数据,数据以键值对的方式存储3.字典数据类型转换

进程、线程补充与协程相关介绍

补充点1.死锁当你知道锁的使用抢锁必须要释放锁,其实你在操作锁的时候也极其容易产生死锁现象(整个程序卡死阻塞)fromthreadingimportThread,LockimporttimemutexA=Lock()mutexB=Lock()#类只要加括号多次产生的肯定是不同的对象#如果你想要实现多次加括号等到的是相同的对象单例模式classMyThead(Thread):defrun(self):self.func1()self.func2()deffunc1(self):mutexA.acquire()print('%s抢到A锁'%self.name)#获取当前线程名mutexB.acqu

进程、线程补充与协程相关介绍

补充点1.死锁当你知道锁的使用抢锁必须要释放锁,其实你在操作锁的时候也极其容易产生死锁现象(整个程序卡死阻塞)fromthreadingimportThread,LockimporttimemutexA=Lock()mutexB=Lock()#类只要加括号多次产生的肯定是不同的对象#如果你想要实现多次加括号等到的是相同的对象单例模式classMyThead(Thread):defrun(self):self.func1()self.func2()deffunc1(self):mutexA.acquire()print('%s抢到A锁'%self.name)#获取当前线程名mutexB.acqu

进程

1什么是进程进程是系统进行资源分配和调度的基本单位,进程表示程序正在执行的过程,是‘活的’,而程序就是一推躺在硬盘上的代码,是‘死的’。2进程的调度1.先来先服务调度算法:对长作业有利,对短作业无利2.短作业优先调度算法:对短作业有利,对长作业无利3.时间片轮转法+多级反馈队列该方法是指,将时间片切成n份,每一份表示一个时间片,这些时间片有一个优先级顺序,最上面的优先执行,一个长任务第一个时间片没有完成会被放到第二个,如果第一个时间片有来任务会优先等第一个执行完在执行第二个。3进程的三状态图4.如何创建进程4.1进程创建的第一种方式(掌握)frommultiprocessingimportPr

进程

1什么是进程进程是系统进行资源分配和调度的基本单位,进程表示程序正在执行的过程,是‘活的’,而程序就是一推躺在硬盘上的代码,是‘死的’。2进程的调度1.先来先服务调度算法:对长作业有利,对短作业无利2.短作业优先调度算法:对短作业有利,对长作业无利3.时间片轮转法+多级反馈队列该方法是指,将时间片切成n份,每一份表示一个时间片,这些时间片有一个优先级顺序,最上面的优先执行,一个长任务第一个时间片没有完成会被放到第二个,如果第一个时间片有来任务会优先等第一个执行完在执行第二个。3进程的三状态图4.如何创建进程4.1进程创建的第一种方式(掌握)frommultiprocessingimportPr

线程

1.什么是线程线程就是进程里面的执行单位,每一个进程肯定都自带一个线程,真正被cpu执行的是线程,线程是代码的执行过程,该过程中需要的资源都找对应的进程要进程是资源的单位,线程是执行单位!补充:同一个进程里面的多个线程资源是共享的!2.为啥要有线程一个进程里面可以开设多个线程,而开设线程是不需要申请内存空间的(进程需要),因此,开设线程的消耗远远小于进程!3.如何使用线程3.1创建线程的第一种方式(掌握)fromthreadingimportThread#导入线程模块frommultiprocessingimportProcessimporttime#定义子线程函数deffunc(name):

线程

1.什么是线程线程就是进程里面的执行单位,每一个进程肯定都自带一个线程,真正被cpu执行的是线程,线程是代码的执行过程,该过程中需要的资源都找对应的进程要进程是资源的单位,线程是执行单位!补充:同一个进程里面的多个线程资源是共享的!2.为啥要有线程一个进程里面可以开设多个线程,而开设线程是不需要申请内存空间的(进程需要),因此,开设线程的消耗远远小于进程!3.如何使用线程3.1创建线程的第一种方式(掌握)fromthreadingimportThread#导入线程模块frommultiprocessingimportProcessimporttime#定义子线程函数deffunc(name):

关于Python封装函数的几道练习题

1.封装函数,可以判断一个数字是否为偶数deffunc(n):ifn%2==0:print("%d是偶数"%n)else:print("%d是奇数"%n)func(11)#11是奇数2.封装函数,可以实现1-n之间所有偶数的打印deffunc(n):foriinrange(1,n+1):ifi%2==0:print(i)func(10)#2#4#6#8#103.封装函数,可以找出整型列表中的最大值lst=[2,7,3,9,1,4]deffunc(n):x=n[0]foriinn:ifi>x:x=ireturnxprint(func(lst))#94.封装函数,可以完成列表的倒序,不使用内置函数

关于Python封装函数的几道练习题

1.封装函数,可以判断一个数字是否为偶数deffunc(n):ifn%2==0:print("%d是偶数"%n)else:print("%d是奇数"%n)func(11)#11是奇数2.封装函数,可以实现1-n之间所有偶数的打印deffunc(n):foriinrange(1,n+1):ifi%2==0:print(i)func(10)#2#4#6#8#103.封装函数,可以找出整型列表中的最大值lst=[2,7,3,9,1,4]deffunc(n):x=n[0]foriinn:ifi>x:x=ireturnxprint(func(lst))#94.封装函数,可以完成列表的倒序,不使用内置函数

Python推导式创建数列的方法

一、列表推导式列表推导式生成列表对象,语法如下:'''[表达式foritemin可迭代对象]或者[表达式foritemin可迭代对象if条件判断]'''例子l1=[xforxinrange(5)]print(l1)#[0,1,2,3,4]l2=[x*2forxinrange(1,5)]print(l2)#[2,4,6,8]l3=[x*2forxinrange(1,100)ifx%5==0]print(l3)#[10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190]l4=[xforxin"abcdefghij"]pr