python基础学习
君子务实
这个作者很懒,什么都没留下…
展开
-
M1 mac python安装pymssql遇到的问题
M1 mac安装pymssql报ERROR: Could not build wheels for pymssql, which is required to install pyproject.toml-based projects解决方案原创 2023-02-28 18:43:18 · 2694 阅读 · 1 评论 -
python 异常捕捉中else的作用
try……except……else语句,如果try后的语句发生异常则执行except语句后的代码,如果try后语句未发生异常则执行else后的语句。while True: try: x = int(input('请输入X:')) y = int(input('请输入Y:')) value = x / y print('x/y is',value) except Exception as e: # 发生异常时执行原创 2020-06-08 21:54:24 · 356 阅读 · 0 评论 -
python的多继承,父类存在多个相同成员按什么规则处理
如果多个父类存在冲突的成员,那么会使用先遇到的成员class Calculator: def calculate(self, expression): self.value = eval(expression) return self.value def printResult(self): print('result:{}'.format(self.value))class MyPrint: def print(self, m原创 2020-06-08 21:46:10 · 522 阅读 · 0 评论 -
python 如何定义、抛出、捕捉异常类
#定义异常类class MyException(Exception): passnum = 12try: if num >= 10: raise MyException('抛出相关异常') # 定义要抛出的异常 print('正常执行代码')except MyException: print('发生了异常')原创 2020-06-08 21:21:22 · 219 阅读 · 0 评论 -
python 使用多线程从url.txt中的url地址下载图片并保存
urls.txt文件中包含多个图像url地址(一行一个),使用多线程下载这些图像并按顺序保存为0.jpg、1.jpg、2jpgfrom urllib3 import *import threadinghttp = PoolManager()disable_warnings() # 禁用警告f = open('demo.txt', 'r')urllist = []while True: url = f.readline() if url == '': bre原创 2020-06-08 21:12:13 · 1019 阅读 · 0 评论 -
Python 什么是信号量,如何使用信号量
信号量:是最古老的同步原语之一,是一个计数器当资源释放时计数器就会递增,当资源申请时计数器就会递减。可以认为信号量就代表着资源是否可用from threading import BoundedSemaphoreMAX = 3 # 资源最大值semaphore = BoundedSemaphore(MAX)print(semaphore._value)semaphore.acquire()print(semaphore._value)semaphore.acquire()print(sem原创 2020-06-08 18:02:26 · 433 阅读 · 0 评论 -
python 什么是线程锁,如何使用线程锁
线程锁:目的是将一段代码锁住,一旦获得所权限,除非释放线程锁,否则其他代码都无法获得锁权限。为什么需要线程锁?多线程同时完成特定的操作时,由于并不是原子操作,所以在完成操作的过程中会被打断去做其他的工作,可能会产生脏数据例如:一个线程读取变量n(初始值为0)然后n++,最后输出n。当执行完n++后被打断,由另外的线程做同样的工作,这是n被加了两次,所以n最后等于2而不是1使用lock函数创建线程锁,使用lock.acquire方法加锁,使用lock.release方法解锁。在加锁后任何代码执行ac原创 2020-06-08 17:24:22 · 730 阅读 · 0 评论 -
Python中的协程的概念及其两种执行方式
1、协程的概念协程又称为微线程、纤程,英文名Coroutine。通过async/await语法进行生命,是编写异步应用的推荐方式。#协程的写法import asyncioasync def main(): print('hello') await asyncio.sleep(1) print('world')asyncio.run(main())2、协程执行的两种方式#run方法直接运行异步函数import asyncioimport timeasyn原创 2020-06-08 16:27:31 · 372 阅读 · 0 评论 -
python 如何在线程中创建和使用全局(当前线程)对象
local类用于创建一个全局对象,不过该对象只能在线程内部使用,也就是说全局是针对一个线程而言的。import threading, timea = threading.local()def worker(): a.x = 0 for i in range(20): time.sleep(0.01) a.x += 1 print(threading.current_thread(), a.x)for i in range(10):原创 2020-06-08 10:49:08 · 474 阅读 · 0 评论 -
Python创建的两个进程之间如何通信
可以使用队列实现在进程间通信(PV操作,类似生产着消费者问题)from multiprocessing import Queue, Processimport random, timelist1 = ['java', 'python', 'javascript']def write(queue): for value in list1: print(f'正在向队列中写数据-->{value}') queue.put_nowait(value)原创 2020-06-07 23:13:52 · 786 阅读 · 0 评论 -
Python如何分别获取当前日期的年月日以及一年中的第几天
localtime处理后的时间可以直接获取更详细的信息import timelocaltime = time.localtime(time.time())print(localtime)print(localtime.tm_year)print(localtime.tm_mon)print(localtime.tm_mday)print(localtime.tm_yday)原创 2020-06-07 22:03:58 · 1274 阅读 · 0 评论 -
python生成器将二维列表转换为一维列表
什么是生成器呢?生成器与函数的定义方法类似,只是需要yield关键字处理每一个需要迭代的值(普通函数需要return返回值)。def myGenerater(): numlist = [1, 2, 3, 4, 5, 6, 7, 8] for num in numlist: yield numfor num in myGenerater(): print(num, end=' ')如何把一个二维列表转换为一维列表呢?nestedlist = [[1,原创 2020-06-07 21:41:21 · 1502 阅读 · 0 评论 -
python 举例看copy和deepcopy区别
copy:只复制深层对象的引用deepcopy:复制深层对象本身import copya = [1, 2, 3, ['a', 'b']]c = copy.copy(a)d = copy.deepcopy(a)print(c) #[1, 2, 3, ['a', 'b']]print(d) #[1, 2, 3, ['a', 'b']]print(a[3] is c[3]) #Trueprint(a[3] is d[3]) #Falsea[3][0] = 'x'print原创 2020-06-07 14:23:42 · 128 阅读 · 0 评论 -
python with语句的作用
with语句用于对资源进行访问的情况,确保不管使用过程中是否发生异常都会执行必要的清理工作使用with语句可以解决以下问题:1、文件打开后代码中没有相应的关闭指令2、写了关闭指令但是在运行关闭指令前抛出了异常自定义类如果想使用with语句需要实现__enter__,__exit__两个方法如下:def MyClass: def __enter__(self): print('enter is invoked!') return self def process(self): pri原创 2020-06-03 22:10:45 · 1119 阅读 · 0 评论