
python初级教程
文章平均质量分 51
幸福清风
专注python语言
展开
-
Python中两个float值相对比
在Python中,由于浮点数的表示通常是近似的,直接使用等号(==)来比较两个浮点数是否相等可能会导致意外的结果。这是因为浮点数在计算机中的存储方式可能导致微小的误差。因此,比较两个浮点数是否“相等”时,通常需要定义一个“容差”(tolerance)或“精度”(precision),来判断两个数是否在可接受的误差范围内相等。如果你不想使用num2 = 0.3# 使用自定义函数比较print(are_close) # 输出: True。原创 2024-10-16 14:19:00 · 585 阅读 · 0 评论 -
Python 解决写入csv中间隔一行空行问题
一、问题描述:生成的csv文件每两行中间都有一行空白行# 写入csv:with open(birth_weight_file,'w') as f: writer=csv.writer(f) writer.writerow(birth_header) writer.writerows(birth_data) f.close()二、解决办法:写入后面加上newline=''with open(birth_weight_file,'w',newline='') a原创 2021-05-14 14:31:59 · 1075 阅读 · 0 评论 -
利用Python从字幕网上下载自己所需要的字幕(热门电影、美剧等)
一、前言主要需求:利用python从字幕库网站上下载字幕字幕网址:http://www.zimuku.la/二、方法:1、打开网站,搜索自己所需要的字幕:2、开始写代码:a、配置标头,手动输入下载的字幕名字(以姜子牙电影为例)# 定义 headershtmlHeather = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Geck原创 2020-11-27 14:12:48 · 4591 阅读 · 0 评论 -
Python环境下,提高pip安装库速度的方法!
一、前言学习 Python 的话,仅掌握标准库是远不够的,有很多好用的第三方库我们也需要用到的,比如,由鼎鼎大名的 K 神开发的爬虫必不可少的 requests 库,一般都是必装的库吧。安装第三方库当然还是用 pip 命令安装最方便了。但是,大家发现 pip install + 包名 的方式 安装第三方库的时候,下载速度很慢,有时还会超时,遇到第三方库比较大时候,是真的很慢,我刚开始学 Python 的时候,我就大意了,没想到这么慢。话说有时都提裤子了,它却报安装超时了。。。咳咳,言归正传,今天原创 2020-11-24 14:39:19 · 601 阅读 · 2 评论 -
使用Python requests post上传图片及示例demo
一、需求:利用python写demo,上传图片,调用接口,并返回数据二、requests上传图片参数:res=requests.request("POST",url, data=None, files=files)三、demo示例:import jsonimport osimport requestsimport timestr_d = {"b": "b_image", "d": "b_image", "f": "f_image", "l": "l_imag原创 2020-09-24 10:47:33 · 7083 阅读 · 0 评论 -
利用nginx建立windows软连,实现IP访问文件
一、运行nginx1、首先下载nginx,下载地址:https://www.lanzous.com/ianm7tg2、解压文件如图:3、运行nginx.exe,浏览器运行电脑ip地址,如图:二、cmd管理员权限运行中输入“cmd”,按住shift键不放松,右键点击cmd.exe就会出现“管理者身份运行”三、建立软连1、示例:a.建立举例...原创 2020-04-08 09:57:21 · 997 阅读 · 0 评论 -
用Python进行屏幕截图,只用两行代码搞定
一、计算机中如何进行屏幕截图呢?1、全屏截图按下键盘中的‘PRTSC’或者‘Print Screen’键,即可实现全屏截图(不同键盘位置和名称可能不同)。此时,并不能看到效果,只是将截图保存在粘贴板中,我们打开Word或者其它windows自带的画图板工具(以画图板工具为例)。我们打开画图板直接按下‘Ctrl’+ 'V'粘贴即可。然后你可以对该图片执行其它操作了。2、截取当前活动窗口...原创 2020-04-07 09:29:43 · 11847 阅读 · 1 评论 -
python中解决死锁的方法
1.添加超时时间:fromthreading import Thread, Lockimporttime mutex1= Lock() #创建一个互斥锁mutex2= Lock() #创建一个互斥锁 def fun1(): while True: mutex1.acquire() print("线程1锁原创 2017-08-12 22:42:46 · 4253 阅读 · 0 评论 -
python同步应用:多个线程有序执行
可以使用互斥锁完成多个任务,有序的进程工作,这就是线程的同步from threading import Thread, Lockimport timemutex1= Lock() #创建一个互斥锁mutex2= Lock() #创建一个互斥锁mutex3= Lock() #创建一个互斥锁 def fun1(): while 1:原创 2017-08-12 22:43:59 · 1881 阅读 · 0 评论 -
python中装饰器的参数与返回值
def itcast1(fun): def inner(*args, **kwargs): print("itcast1 start") # args ->元组数据() #kwargs ->字典数据{} #result用来接收被装饰函数的返回值 result = fun(*原创 2017-08-06 22:47:36 · 2646 阅读 · 0 评论 -
python中的死锁
在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁。 尽管死锁很少发生,但一旦发生就会造成应用的停止响应。下面看一个死锁的例子from threading import Thread, Lockimport time mutex1= Lock() #创建一个互斥锁mutex2= Lock() #创建一个互斥锁原创 2017-08-12 22:40:33 · 1419 阅读 · 0 评论 -
多线程的全局变量与局部变量
在多线程开发中,全局变量是多个线程都共享的数据,而局部变量等是各自线程的,是非共享的。 from threading import Threadimport time classMyThread(Thread): #重写构造方法 def __init__(self, num): # Thread.__init__(self)原创 2017-08-12 22:36:31 · 820 阅读 · 0 评论 -
python中的非阻塞使用互斥锁
锁定方法acquire可以有一个blocking参数。 如果设定blocking为True,则当前线程会堵塞,直到获取到这个锁为止(如果没有指定,那么默认为True) 如果设定blocking为False,则当前线程不会堵塞 from threading import Thread, Lockimport time num =0 #资源竞争问题 m原创 2017-08-12 22:35:31 · 3482 阅读 · 0 评论 -
python中的闭包
定义一个函数,在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包。闭包具有提高代码可复用性的作用。1.闭包似优化了变量,原来需要类对象完成的工作,闭包也可以完成2.由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存修改外部函数中的变量:原创 2017-08-04 23:16:10 · 409 阅读 · 0 评论 -
python中的生成器
利⽤迭代器,可以在每次迭代读取数据(通过next()⽅法)时按照特定的规律进⾏⽣成。但是我们在实现⼀个迭代器时,关于当前迭代到的状态需要我们⾃⼰记录,进⽽才能根据当前状态⽣成下⼀个数据。为了达到记录当前状态,并配合next()函数进⾏迭代使⽤,我们可以采⽤更简便的语法,即⽣成器(generator)。⽣成器是⼀类特殊的迭代器。 创建⽣成器⽅法1要创建⼀个⽣成器,有很多种⽅法。第⼀种⽅法原创 2017-08-04 23:06:35 · 569 阅读 · 0 评论 -
python中迭代器的应用场景
1.迭代器的应用场景 1). 如果数列的数据规模巨大2). 数列有规律,但是依靠列表推导式描述不出来 2.数学中有个著名的斐波拉契数列(Fibonacci),数列中第⼀个数0,第⼆个数1,其后的每⼀个数都可由前两个数相加得到:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...现在我们原创 2017-08-04 22:58:38 · 4891 阅读 · 0 评论 -
python中的生产者与消费者模式
Queue的说明 对于Queue,在多线程通信之间扮演重要的角色 添加数据到队列中,使用put()方法从队列中取数据,使用get()方法判断队列中是否还有数据,使用qsize()方法 生产者消费者模式的说明 为什么要使用生产者和消费者模式 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,原创 2017-08-12 22:45:31 · 3928 阅读 · 0 评论 -
python中的LEGB 规则
Python 使⽤ LEGB 的顺序来查找⼀个符号对应的对象locals -> enclosing function -> globals -> builtins局部变量———闭包空间———全局变量———内建模块a = 1 # 全局变量 globalsdef fun(原创 2017-08-06 22:44:36 · 4502 阅读 · 0 评论 -
python中多层装饰器使用步骤
原创 2017-08-06 22:45:23 · 420 阅读 · 0 评论 -
python中的集合set
集合与之前列表、元组类似,可以存储多个数据,但是这些数据是不重复的集合对象还⽀持union(联合), intersection(交), difference(差)和sysmmetric_difference(对称差集)等数学运算.>>> x = set('abcd')>>> x{'c', 'a',原创 2017-08-09 22:30:24 · 412 阅读 · 0 评论 -
如何安装Pycharm官方统计代码行插件
最近一直想统计Pycharm的总计代码行数,找到了官方的统计行数插件,发现效果还不错。官方代码统计插件指导:https://plugins.jetbrains.com/plugin/4509-statistic(英文版)(初级教程,大牛请忽略)***该插件需要Java1.8环境变量支持,没有安装JRE的同学出门左转找百度,安装Java1.8,部署JRE环境。完成JRE环境部...原创 2018-10-11 10:35:15 · 2952 阅读 · 0 评论 -
正则表达式之 贪婪与非贪婪模式详解
1 概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。非贪婪模式只被部分NFA引擎所支持。 属于贪婪模式的量词,也叫做匹配优先量词,包括: “{m,n}”、“{m,}”、“?”、“*”和“+”。 在一些使用NFA引擎的语言中,在匹配优先量词后加上“?”,即变成属于非贪婪模式的...原创 2018-05-02 10:31:18 · 830 阅读 · 0 评论 -
如何使用 Pylint 来规范 Python 代码风格
Pylint 是什么Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Pylint 默认使用的代码风格是 PEP 8,具体信息,请参阅参考资料)和有潜在问题的代码。目前 Pylint 的最新版本是 pylint-0.18.1。Pylint 是一个 Python 工具,除了平常代码分析工具的作用之外,它提供了更多的功能:原创 2017-12-07 10:29:57 · 461 阅读 · 0 评论 -
编程思想:面向对象和面向过程
何谓面向对象?何谓面向过程?对于这编程界的两大思想,一直贯穿在我们学习和工作当中。我们知道面向过程和面向对象,但要让我们讲出来个所以然,又感觉是不知从何说起,最后可能也只会说出一句就是那样啦,你知道啦。而这种茫然,其实就是对这两大编程思想的迷糊之处。本文通过学生到校报道注册的实例,阐述了面向过程和面向对象两大思想。希望能对你的学习和工作有所帮助。一、面向过程 首先我们来认识下,什原创 2017-10-10 21:46:48 · 928 阅读 · 0 评论 -
python中向类中动态添加新特性及删除属性方法
class Foo(object): pass obj = Foo() # 添加对象属性(对象名追加对象属性)obj.a = 100# print(obj.a) # 添加类属性(类名称追加类属性)Foo.b = 200 # print(Foo.b)# print(obj.b) # 添加对象方法def obj_fun(self):原创 2017-08-06 22:51:54 · 8344 阅读 · 0 评论 -
python中的wraps函数
使⽤装饰器时,有⼀些细节需要被注意。例如,被装饰后的函数其实已经是另外⼀个函数了(函数名等函数属性会发⽣改变)。添加后由于函数名和函数的doc发⽣了改变,对测试结果有一定影响!import functools def itcast1(fun): #带参数的装饰器 #wraps是用来将inner函数的属性设置为fun的属性值 @functools原创 2017-08-06 22:49:18 · 1905 阅读 · 0 评论 -
python中函数的可变参数解析
原创 2017-08-06 22:46:34 · 374 阅读 · 0 评论 -
利用python自定义完整版迭代器
classMyList(object): """自定义的可迭代对象,迭代器容器""" def __init__(self): self.container = [] self.i = 0 def add(self, item): """向对象中添加数据""" self.container原创 2017-08-03 23:14:35 · 2432 阅读 · 0 评论 -
for循环利用可迭代对象与迭代器完成工作的本质
for循环工作本质for item in Iterable 循环的本质就是先通过iter()函数获取可迭代对象Iterable的迭代器,然后对获取到的迭代器不断调⽤next()⽅法来获取下⼀个值并将其赋值给item,当遇到StopIteration的异常后循环结束。li = [100, 200, 300]# for num in li:# p原创 2017-08-03 23:10:42 · 646 阅读 · 0 评论 -
python中的迭代器Iterator
迭代器是⽤来帮助我们记录每次迭代访问到的位置,当我们对迭代器使⽤next()函数的时候,迭代器会向我们返回它所记录位置的下⼀个位置的数据。实际上,在使⽤next()函数的时候,调⽤的就是迭代器对象的 __next__ ⽅法(Python3中是对象的 __next__ ⽅法,Python2中是对象的next()⽅法)。所以,我们要想构造⼀个迭代器,就要实现它的原创 2017-08-03 23:09:05 · 859 阅读 · 0 评论 -
python——import导入模
1.import 搜索路径import sys sys.path路径搜索从上⾯列出的⽬录⾥依次查找要导⼊的模块⽂件 ' ' 表示当前路径程序执⾏时导⼊模块路径sys.path.append('/home/itcast/xxx')sys.原创 2017-08-03 22:39:56 · 554 阅读 · 0 评论 -
python中僵尸进程
⼦进程运⾏完成,但是⽗进程迟迟没有进⾏回收,此时⼦进程实际上并没有退出,其仍然占⽤着系统资源,这样的⼦进程称为僵⼫进程。因为僵⼫进程的资源⼀直未被回收,造成了系统资源的浪费,过多的僵⼫进程将造成系统性能下降,所以应避免出现僵⼫进程。 import osimport time ret = os.fork() #创建新的进程 一次调用,两次返回 if ret原创 2017-08-09 22:38:30 · 2341 阅读 · 0 评论 -
python中的孤儿进程
1.子进程未运行完父进程就结束运行退出,留下来的子进程就是孤儿进程 2.父进程结束退出,子进程会被继父收回,通常是int进程(pid为1)无危害 import osimport time ret = os.fork() #创建新的进程 一次调用,两次返回 if ret == 0: # 子进程执行 #子进程拿到的返回值是原创 2017-08-09 22:36:42 · 1675 阅读 · 0 评论 -
python进程的回收—wait
1.os.wait()回收资源 os.wait()方法用来回收子进程占用的资源: import osimport time ret = os.fork() #创建新的进程 一次调用,两次返回 if ret == 0: # 子进程执行 #子进程拿到的返回值是0 print("子进程:pid=%d, ppid=%d原创 2017-08-09 22:35:17 · 3921 阅读 · 0 评论 -
python中进程创建—fork()
导入模块:import os 1.程序执行到os.fork()时,操作系统会创建一个新的进程(子进程),复制父进程信息2.子进程从fork()函数中得到返回值零3.父进程从fork()函数中得到返回值子进程的id4.fork()函数调用一次,返回两次5.一个父进程可以fork出很多子进程6.子进程调用自己id用函数getpid()7.子进程调用父进程的id用函数原创 2017-08-09 22:34:10 · 397 阅读 · 0 评论 -
python中字符串与字节转换
原创 2017-08-09 22:32:21 · 517 阅读 · 0 评论 -
python中主要内建函数
1.__getattribute__属性访问拦截器(内建属性 class Foo(object): def __init__(self): self.a = 100 def __getattribute__(self, name): if name == "a": # return self.a #原创 2017-08-09 22:29:00 · 675 阅读 · 0 评论 -
垃圾回收:引用计数与分代收集机制
当引⽤计数为0时,该对象⽣命就结束了。引⽤计数机制的优点:1、简单2、实时性:⼀旦没有引⽤,内存就直接释放了。不⽤像其他机制等到特定时机。实时性还带来⼀个好处:处理回收内存的时间分摊到了平时。引⽤计数机制的缺点:1、维护引⽤计数2、消耗资源循环引⽤list1 = [] list2 = [] list1.ap原创 2017-08-09 22:27:28 · 1437 阅读 · 0 评论 -
小大整数对象池及intern机制
1. 小整数对象池Python 对⼩整数的定义是[-5, 256] 2. 大整数对象池每⼀个⼤整数,均创建⼀个新的对象。a = 100b = 100# print(a is b)True #代码块c = 1000d = 1000print(c is d) # True class Foo(object)原创 2017-08-08 11:56:50 · 1326 阅读 · 1 评论 -
元类及创建元类的方法(面试用
元类就是类的类,type就是Python中创建所有类的元类。type就是创建类对象的类。Python中所有的东西——都是对象。这包括整数、字符串、函数以及类。它们全部都是对象,并且它们都是从一个类创建来,这个类就是type。# class Foo(object):# a = 100# #对于上面声明类的代码,实际上是由type帮助我们创建了类,具体可以理解为下面的过程#原创 2017-08-08 11:12:04 · 1041 阅读 · 0 评论