![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Python
文章平均质量分 65
Python语言相关
从流域到海域
此人不懒,但他除了干货什么都没有留下。
展开
-
Python os.environ
Pythonos包里面提供了一个获取当前系统环境变量的字典environ,key值对应环境变量名称,value值对应路径。可以像字典一样操作,聪明的你应该已经会了。import osprint(os.environ['HOME']) # /Users/adminimport osfor k,v in os.environ.items(): print(k, v)...原创 2022-01-11 14:05:23 · 444 阅读 · 0 评论 -
Python 如何生成uuid
UUIDUniversally Unique Identifier (UUID),即通用唯一识别码,是一种软件建构的标准。它的目的在于让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要中央控制端做辨识信息的制定。每个人都可以创建与其他人不冲突(重复)的UUID,因此常用作对某一东西的唯一标识。UUID常用作数据库的主键。UUID常用作一次计算任务的唯一标识。Python uuidPython中内置了一个名为uuid包来处理UUID的生成,使用起来非常方便,它提供了生成36位uuid的方法原创 2022-01-10 18:07:02 · 8485 阅读 · 1 评论 -
Python time和datetime用法小结
Python内置两个关于时间处理的包,time和datetime。本文用于记录笔者在使用这两个包时的一些心得,将会不间断更新。从命名上讲,time包提供处理时间相关的函数,datetime包提供处理时间日期相关的函数。time包time.sleep()time.sleep()是time包中使用最频繁的函数之一,它接收一个参数,用于以单位秒指定睡眠时间,任何调用该方法的线程都会阻塞至计时完成。time.sleep(1) # 当前线程将睡眠1stime.time()计时绕不开一个固定时间.原创 2022-01-09 15:42:18 · 4808 阅读 · 0 评论 -
Python json.load/loads以及json.dump/dumps有什么区别?
python的json.load/loads以及json.dump/dumps有什么区别?原创 2022-01-02 17:17:47 · 801 阅读 · 0 评论 -
Python原生线程池ThreadPoolExecutor
Python原生线程池多线程的基本知识这里就不再赘述了,本文只讲Python原生线程池的用法。python多线程Python3种多线程常用的两个模块为:_thread (已废弃,不推荐)threading (推荐)使用线程有两种方式,函数式调用或者继承线程类来包装线程对象。但如果线程超过一定数量,这种方式将会变得很复杂且线程的开关开销线性递增。池化思想是一种工程上管理长期占用资源并使用提高其使用效率的常见思想,它的体现包括数据库连接池、线程池等等。池化思想非常直观,将要维护的资源保存在原创 2021-12-19 20:44:26 · 1126 阅读 · 0 评论 -
Python基于APScheduler实现定时任务
Python基于APScheduler实现定时任务Python这个语言的优势就在于有丰富的第三方库,既然原生实现有这样那样的缺点,我们可以借助第三方库来实现定时任务。APScheduler,即Advanced Python Scheduler的缩写,是一个简单易用的python定时框架。APScheduler是一个强大的Python定时框架,它提供了基于日期、固定时间间隔、以及类Linux crontab类型的定时任务,并支持持久化和以daemon方式执行任务。第三方框架需要安装:pip in原创 2021-12-19 19:54:21 · 814 阅读 · 0 评论 -
Python实现定时任务的几种方法
Python实现定时任务的几种方法死循环内sleep (轮询,阻塞)在一个死循环内放入执行的任务,sleep一段时间之后再执行:import timedef func(): print("func executed")def timer(): while True: func() time.sleep(5)timer()# 每隔5s执行一次func函数该方法能够执行固定间隔时间的任务,时间间隔由time.sleep()的睡眠时间指定。原创 2021-12-19 19:53:08 · 6877 阅读 · 0 评论 -
Python万能参数(*args, **kwargs)
Python内置一颗这样的语法糖,它允许函数声明时以(*args, **kwargs)声明它的参数,而(*args, **kwargs)可以接受任何类型的参数。下面我们来看看这颗语法糖的实现原理:动态传参*args定义一个函数时,*将所有位置参数聚合到一个元组中,赋值给args**kwargs定义一个函数时,**将所有关键字参数聚合到一个字典中,赋值给**kwargs综上,使用*args和**kwargs我们能够同时处理位置参数和关键字参数# 示例*argsdef func(*args原创 2021-11-19 14:38:27 · 886 阅读 · 0 评论 -
Python nonlocal关键字
关键字nonlocal用来在函数或者其他作用域中使用外层(非全局变量)。换句话说,nonlocal用来声明变量不处于当前的函数当中,需要解释器在包含这个函数的函数中寻找nonlocal声明的同名变量,找到后就可以使用这个对象对应的值在当前函数中进行操作。它用来在部分情况下代替global关键字,防止滥用。不使用nonlocaldef test(): x = 0 def inner(): x += 1 print(x) inner() .原创 2021-11-17 16:35:30 · 877 阅读 · 0 评论 -
Python @staticmethod和@classmethod
如果我们想要和Java一样,在不实例化对象的情况下,使用类名.方法名()完成方法调用,可以使用@staticmethod装饰器将类的成员方法定义为静态方法,或者使用@classmethod装饰器将类的成员方法定义属于为类的方法(严格来讲,方法应该是属于实例化之后对象的方法,因为方法在面向对象的概念里是行为的抽象)。@staticmethod & @classmethodclass Math: @staticmethod def add(x, y): # 注意没有self参数原创 2021-03-24 21:06:06 · 321 阅读 · 0 评论 -
Python @property
prerequisite: Python装饰器在面向对象编程中,我们通常希望一个类的属性具有一定程度的封装性,其他对象只能通过定义好的接口访问这些属性,而不能够随意修改。Java里面体现在getter和setter两个方法。在Python中如果我们不希望类的方法被修改,可以使用@Property装饰器。它可以修饰方法,将该被修饰的方法转为相同名称的只读属性;也可以与属性配合使用,来防止属性被修改。即@Property装饰器常见使用场景有两个:将方法转化为同名属性与类的属性配合使用,防止属.原创 2021-03-24 19:59:16 · 128 阅读 · 1 评论 -
Python 装饰器
装饰器在Java中是一种设计模式。装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。装饰器在Python中提供类似于注解使用方式,直接使用@装饰器名就是调用已经写好的装饰器对现有方法进行装饰,同时python语言已经内置了大量已经实现好的装饰器。这种便利性是基于Python支持面向函数编程这一特性从而可以简单实现闭包而产生的。闭包闭包就是能够读取其他函数内部变量的函数,它实现上.原创 2021-03-24 18:41:57 · 177 阅读 · 1 评论 -
Python map()函数
MapReduce: Simplified Data Processing on Large Clusters Jeffrey Dean and Sanjay Ghemawat https://research.google.com/archive/mapreduce.html 这篇来自谷歌的论文介绍了map/reduce,摘录如下: Abstract MapReduce原创 2017-12-18 18:21:23 · 607 阅读 · 0 评论 -
使用Python生成一张用于登陆验证的字符图片
Python Pillow库的简单使用 使用Python生成一张用于登陆验证的字符图片, 代码使用了Pillow,Anaconda已经默认安装此库,如果你使用的是官方版的Python需要先下载此库。代码如下,在注释中予以说明:from PIL import Image, ImageDraw, ImageFont, ImageFilterimport random#定义一个生成随机字符的函数 A原创 2018-01-03 17:45:49 · 356 阅读 · 0 评论 -
Python的闭包(Closure)与惰性计算(Lazy Evaluation)
闭包 在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包。运行时,一旦外部的 函数被执行,一个闭包就形成了,闭包中包含了内部函数的代码,以及所需外部函数中的变量的引用。其中所引用的变量称作上值(upvalue)。 https://zh.wikipedia.org/wiki/%E9%97%AD%E5%8C%85_(%E8%AE%A1%E7原创 2017-12-19 16:24:48 · 2149 阅读 · 0 评论 -
Python lambda表达式
“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。 https://baike.baidu.com/item/lambda%E8%A1%A8%E8%BE%原创 2017-12-19 16:53:55 · 318 阅读 · 0 评论 -
Python Windows下分布式进程的坑(分布式进程的一个简单例子)
下面这个例子基于”廖雪峰的Python教程:分布式进程”原例在Linux上运行,直接在Windows上运行会出现错误,下面是针对原例进行的改进,使之能成功运行。 https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431929340191970154d52b9d484b88a7原创 2017-12-27 16:31:03 · 7803 阅读 · 12 评论 -
Python yield关键字 和 Generator(生成器)
Generators functions allow you to declare a function that behaves like an iterator, i.e. it can be used in a for loop. https://wiki.python.org/moin/Generators 翻译:生成器功能允许你声明一个行为类似于迭代器的函数,它也能用在for循原创 2017-12-14 18:54:38 · 510 阅读 · 0 评论 -
Python sorted()函数
Python sorted()函数 list内置一个方法sort(),可以实现对list内的元素做排序。 Python中提供sorted()高级函数进行排序,它也可以接收一个函数作为参数来补充定义排序规则,默认按值从小到大排列。 sort()和sorted()区别在于前者进作用于list,后者可以作用于所有可迭代对象。 形式:sorted(iterable[, cmpfunc[, k原创 2017-12-18 19:25:54 · 667 阅读 · 0 评论 -
Python filter()函数
Python filter()函数 filter()函数顾名思义,就是过滤器,它是Python内置的高级函数之一。 filter()函数接收2个参数,一个是用来筛选的谓词函数(即返回值是True或者False的函数)和一个序列。filter()函数将使用谓词函数对所有序列中的元素进行处理,保留其中返回值是True的元素,以filter类型的对象保存。格式:filter(function, i原创 2017-12-18 19:06:41 · 959 阅读 · 0 评论 -
Python reduce()函数
MapReduce: Simplified Data Processing on Large Clusters Jeffrey Dean and Sanjay Ghemawat https://research.google.com/archive/mapreduce.html 这篇来自谷歌的论文介绍了map/reduce,摘录如下: Abstract MapReduce is原创 2017-12-18 18:43:00 · 283 阅读 · 0 评论 -
Python基本数据类型
其实之前有一篇博客:C\C#\Java\Python 基本数据类型比较 http://blog.csdn.net/solo95/article/details/50821352以下是正文:Python基本数据类型整数浮点数字符串布尔值复数空值1.整数int 带符号整数,不限制大小(和其他语言不同,python的整形没有范围限制,只有正负之分)2.浮点数flaot 双精度浮点数,Py原创 2017-12-05 23:23:32 · 337 阅读 · 0 评论 -
Python set(集合) 这一定是最全的介绍集合的博文
Python的set是一个无序且无重复元素的集合,概念上相当于数学上的无序集,数据结构上相当于dict的键。 既然set是集合,则必然可以实现并、交、差、对称差等集合运算。 set是一组无序排列的可哈希的值,因此可以用作字典中的键。set和之前介绍的list、tuple、dict等一样,可以使用in操作符检查元素是否在集合中存在,使用len()求得集合元素的个数,使用for循环迭代其成员,使原创 2017-12-08 16:46:58 · 4306 阅读 · 2 评论 -
Python 函数
Python的函数与其他语言的函数概念上是一致的,只是形式上有所不同。在面向过程的编程语言中(C语言),函数是代码的基本组成形式,是功能的基本模块;在面向对象的语言中(Java/C++/C#),函数叫方法,是类的组成部分。Python函数形式:def max(a, b): if(a > b): return a else return b 以def关键字作为函数的标识符,依靠”:”原创 2017-12-09 14:54:59 · 227 阅读 · 0 评论 -
Python 切片(Slice)
在实际开发中,经常遇到下面的需求:在线性表(数组)中提取若干个元素的操作,提取规则有很多,比如说提取前5个、提取后5个、提取奇数/偶数位元素等等。 在抽样检测提取样本时,经常遇到每隔100箱牛奶,取其中一瓶作为样本进行检测。 在其他语言中,实现上述操作是依靠for循环来实现。//例 C++取数组偶数位元素len = (sizeof(arrray)) / (sizeof(array[0]原创 2017-12-11 14:49:23 · 906 阅读 · 0 评论 -
Python 迭代(iteration)
对一组数据进行遍历访问称为迭代(iteration)。 迭代是Python高级特性之一,而且Python的迭代比其他语言更为简便。但是请注意,迭代操作和对迭代器进行操作是不一样的,迭代器后面的博文会讲到。//Java示例:for(int i = 0; i < array.length(); i++) { system.out.println(array[i]);}而在之前的博客中,想必原创 2017-12-11 16:24:19 · 2253 阅读 · 0 评论 -
Python 装饰器(Decorator)
引入如果你学过Java的UML设计模式,那么你一定对Decorator Pattern和你熟悉,Decorator Pattern即装饰器模式(也译修饰器模式),是著名的四人帮(Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. 设计模式:可复用面向对象软件的基础. 北京: 机械工业出版社)书中介绍的23种设计模式之一。 In ob原创 2017-12-19 19:41:40 · 605 阅读 · 0 评论 -
Python函数参数总结(位置参数、默认参数、可变参数、关键字参数和命名关键字参数)
Python函数的参数多达5种,不像Java那样参数(必选参数)只有一种,而是像C++那样提供默认参数,除此之外,还提供可变参数、关键字参数、命名关键字参数,这样就使得Python函数的参数变得十分复杂。但复杂意味着灵活便捷,Python语言之所以流行起来,与起本身巨大的灵活性是分不开的。可以说Python是最方便使用的语言。 Python参数类型: - 基本参数(就是其他语言所说的参数原创 2017-12-09 17:25:25 · 6138 阅读 · 0 评论 -
Python 5种连接字符串的方法
Python 5种连接字符串的方法print('python' 'best') #使用空格print('python' + 'best') #使用+号 print('python', 'best') #使用,号 注意会有空格str_list = ['python', 'best']原创 2017-12-20 19:48:18 · 1239 阅读 · 0 评论 -
Python 元类(MetaClass)
Python 动态语言的动态特性 Python是解释运行的动态语言,它与Java最大的不同是Java的类和方法是在编译时完成定义的,而对Python来说,类和函数在解释器进行解释时动态创建。class Sample(object): def display(self): print('This is a sample of class')#交互环境示例>>> from test原创 2017-12-22 16:12:17 · 313 阅读 · 0 评论 -
Python 异常类继承树
BaseException SystemExitKeyboardInterruptGeneratorExitException StopIterationStopAsyncIterationArithmeticError FloatingPointErrorOverflowErrorZeroDivisionErrorAssertionErrorAttributeErrorB原创 2017-12-22 17:23:42 · 1244 阅读 · 0 评论 -
Python pdb调试
Python提供了pdb命令来对代码进行调试,下面是pdb的使用方法。#示例脚本:a = 1b = 0print(1/0)#命令行调试C:\Users\hongze>python -m pdb test.py #调用方法> c:\users\hongze\test.py(1)<module>()-> a = 1(Pdb) l原创 2017-12-25 11:33:32 · 282 阅读 · 0 评论 -
Python list(列表)
本节介绍Python中基本数据结构list和tuple,当然其中文为列表和元组,但还是希望你按英文记忆,外国人发明的东西使用外语描述最为准确。Python一共有6种序列的内置类型,list和tuple是其中最常见的。6种序列的都可以进行的操作包括索引、切片,加(实际上是连接),乘(实际上是复制),检查成员是否存在。Python listlist格式:以大括号作为识别符, 元素之间以”,”间隔, 末尾原创 2017-12-07 19:27:17 · 1544 阅读 · 0 评论 -
Python tuple(元组)
tuple即元组,与list类似,差别在于tuple中的元素不可更改,即tuple是操作受限制的list(不能更改)。Python tupletuple格式:以括号作为识别符, 元素间以”,”分隔,末尾加不加”;”语法上都没错。tup = (元素1, 元素2, 元素3,…); //;可省略tup = (1, 2, 3, 4)tup = (5, 6, 'a', 'b') #tuple中的元素也可以不原创 2017-12-07 20:15:09 · 670 阅读 · 0 评论 -
Python 条件判断
Python if语句格式:注意不要漏写:这是容易犯错的地方。 if语句包含两部分,判断部分和执行部分,只有在判断部分得到的布尔值为True时,才会执行执行部分否则转向下一行语句。if <条件判断1>: <执行1>elif <条件判断2>: <执行2>elif <条件判断3>: <执行3>else: <执行4>这个给两个例子想必大家就能懂了#BMI指数(即身体原创 2017-12-07 21:43:14 · 2599 阅读 · 0 评论 -
Python 列表生成式(List Comprehensions)
列表生成式(List Comprehensions),顾名思义,即为生成列表的表达式。列表生成式是Python内置的高级特性,简单却功能强大,充分体现了Python的简洁美。 格式:[列表形式 生成规则] #即一个列表生成式由2个表达式组成列表生成式(List Comprehensions) 生成规则只要符合Python的语法即可,所以非常灵活,大家可以举一反三,一次类推。下面举几个例子供原创 2017-12-13 18:18:14 · 600 阅读 · 0 评论 -
Python iterator迭代器
迭代器iterator是面向对象的程序设计语言都提供的遍历序列对象的一种方法,在Python中封装程度更高,其把迭代协议在语言的层面就已经实现了,所以使用起来要比其他语言方便得多。请注意,在脚本语言中(包括Python),一切数据类型都是对象。 简而言之,迭代器是遍历一组数据集中元素的一种是实现方法。 迭代是一个实现可迭代对象(实现的是 iter() 方法)和迭代器(实现的是 next()原创 2017-12-15 13:37:09 · 545 阅读 · 0 评论 -
Python惰性序列
Python的iterator就是一个惰性序列,要说明什么是惰性序列,首先我们得知道什么是惰性计算。 事实上,很多如Java在内的高级语言都支持惰性序列。惰性计算引自维基百科: https://zh.wikipedia.org/wiki/%E6%83%B0%E6%80%A7%E6%B1%82%E5%80%BC 在编程语言理论中,惰性求值(英语:Lazy Evaluation),又译为惰性原创 2017-12-18 16:02:47 · 9997 阅读 · 0 评论 -
Python dict(字典)
Python dict即字典,是一种非常有用的数据结构,相当于其他语言的Map,这种数据结构采用键值对(key-value)形式存储,具有非常快的查询速度,即使在数据量十分庞大的情况下也依然如此。Python dict 形式:每一个元素都是键值对key:value,以”:”分割,元素之间以”,”作为分隔符,最后一个元素的”,”可以省略。 dict = {'Steve': 100, 'Johnson原创 2017-12-07 23:24:39 · 672 阅读 · 0 评论