Python - 基础
T型人小付
任职于某游戏公司新加坡分部,自动化运维/python全栈/IT,梦想是35岁前可以不需要通过投简历的方式换工作。
展开
-
python的时间操作模块datetime和time使用详解
python中有两个和时间相关的模块time和datetime,我自己在使用的时候经常搞混。这一篇就来记录下这两个模块常见的一些功能。文章目录time模块和datetime模块时间的表示time模块操作datetime模块操作Mysql存储time模块和datetime模块time是python的内建模块,用与和时间相关的一些操作;datetime模块是第三方模块,为了方便操作,将和date与time相关的一些操作进行了封装。所以本质上来讲,能用datetime来操作的都能用time来实现,通过后面原创 2020-10-24 12:39:23 · 1679 阅读 · 0 评论 -
python中的位运算和集合运算妙用实例
python中有一些运算符不是经常会用到,例如&还有|,但是这些运算符在很多场合却能显示奇效。这篇文章让我们一起来看看python中的位运算和集合运算,然后看看实际应用中两个非常巧妙的使用场景。文章目录位运算集合运算实际应用位运算集合运算位运算位运算只适用于整数,将对应的二进制数逐位进行计算,其规则如下符号含义&与运算,都为1返回1,否则返回0|或运算,都为0返回0,否则返回1^异或运算,不同为1,相同为0~取反,1变0,0变1&l原创 2020-10-22 17:45:31 · 1656 阅读 · 2 评论 -
python的单例模式及多线程加锁实现详解
单例模式算是最常见的设计模式了,也是面试中的高频测试点。这一篇就来总结下如何在python中实现单例模式。文章目录单例模式对象创建过程代码实现多线程import模块来实现单例模式总结单例模式所谓单例模式,就是针对某一个类,不管实例化多少次,实例出来的对象都是同一个。之所以需要用到单例模式,有两个主要原因。其一是在程序开发中很多对象用于全局的记录,这些对象不管在程序的哪个地方被调用都应该是指向同一个,例如日志对象。其二是因为对象的创建和销毁都是耗费资源的,如果对象的创建次数减少,势必能提高程序的整体运原创 2020-10-16 19:25:27 · 4835 阅读 · 5 评论 -
python多进程和多线程看这一篇就够了
脑海中关于进程和线程的概念一直很模糊,什么时候该用多进程,什么时候该用多线程总是搞不清楚。同时python因为历史遗留问题存在GIL全局锁,就让人更加困惑。这一篇就完整整理一下python中进程和线程的概念和实现。文章目录进程和线程GIL锁多进程 vs 多线程代码实现多进程进程池进程间通讯多线程线程池异步线程间通讯总结进程和线程进程(process)和线程(thread)的区别应该算是个老生常谈的话题。这里引用知乎用户的一个高赞回答来深入浅出的解释一下看了一遍排在前面的答案,类似”进程是资源分配的原创 2020-10-10 22:08:35 · 27382 阅读 · 20 评论 -
python中的反射及在动态导入中的使用详解
这篇博客记录下python中关于反射的知识点,同时结合实例看看其在动态导入中的应用。什么是反射反射(Reflect)是指面向对象编程中通过字符串动态获取对象的类型、属性和方法等信息。反射使用场景想象下面的场景,我们编写了几十个插件供业务程序来使用,而具体业务中使用哪些插件是由配置文件来控制的,或者由用户输入的。不管是配置文件还是用户输入,都是采用字符串形式来表示插件名,我们需要检查字符串代表的插件名是否存在,如果存在需要获取对应的插件对象并调用。文字表述不太直观,看如下的一个项目在plugin原创 2020-10-07 12:24:51 · 740 阅读 · 4 评论 -
python利用Decimal处理浮点数计算的精度问题
之前在学习Django中ORM的时候,一直不明白怎么有一个数据类型叫Decimal。直到最近在一个项目中遇到了小数点计算的问题,发现要解决小数计算的精度问题,还真得用到这个Decimal不可。文章目录问题描述解决办法四舍五入Decimal问题描述浮点数在内存中存储的时候因为存储机制的原因,天然存在精度丢失的现象,具体原因这里不赘述了,感兴趣的朋友可以参考另一篇博客《浮点型数据精度丢失实例详解》。a=2.2a*3Out[16]: 6.6000000000000005本来期望的结果是6.6,结果原创 2020-09-17 18:39:02 · 1994 阅读 · 3 评论 -
python中可迭代对象,迭代器和生成器实例详解
这几天在弄scrapy爬虫的时候,发现scrapy将爬取的网页用for循环去对每一小块进行处理,但是为了尽量少占用内存,在循环体内采用的是yield代替的return,从而通过生成器的方式实现了异步非阻塞的流水作业,边爬取边解析。这一篇就从原理来说一说python中必须要掌握但是又不太好区分的三个概念:可迭代对象,迭代器和生成器。文章目录生成器生成器函数生成器表达式迭代器可迭代对象实例演示总结生成器既然提到了生成器和yield,就先从它开始说起。不一次性生成全部结果,而是根据某种算法在需要的时候再推算原创 2020-08-10 01:49:23 · 344 阅读 · 0 评论 -
python利用format进行格式化打印
使用python进行输出打印的时候,很多朋友还是使用百分号,但是其实还有一个更简洁的方式,就是字符串的format方法。文章目录基本使用数字格式化具体实例基本使用基本格式如下'xx{}xx{}'.format(a,b)一个包含大括号的字符串,通过调用format方法,将传递的参数按顺序分别填充到大括号处。来看几个例子。首先定义几个数据if __name__ == '__main__': a=[11,13,15,17,19] b={'name':'xiaofu','age':原创 2020-07-18 16:24:51 · 2940 阅读 · 1 评论 -
python中min和max方法的key参数使用方法详解
今天在做一个对字典的value排序并获取对应key操作的时候,看到一个非常简洁的方法,在这里记录一下。文章目录min和max方法key参数实例演示扩展min和max方法常规情况下,只需要传递一个iterable对象即可In [2]: a=[4,23,65,3,12] In [3]: min(a)原创 2020-07-17 22:58:37 · 4461 阅读 · 3 评论 -
python装饰器的几个进阶用法
在之前的博客《一篇文章汇总Python装饰器全知识图谱(使用场景,基本用法,参数传递,闭包操作,类装饰器和AOP)》中,装饰器的基本使用都涵盖到了,不过继续深入还是有一些细枝末节可以继续讨论的,下面让我们用实例来看看装饰的几个进阶使用。文章目录类装饰器带参数的类装饰器函数扩充接口类装饰器使用wraps恢复元信息函数装饰器装饰类方法类装饰器装饰类方法总结类装饰器类装饰器中的__init__方法相当于装饰器的外层函数,而__call__方法相当于装饰器的内层函数。创建一个装饰器使函数延迟2秒执行clas原创 2020-07-16 17:56:17 · 540 阅读 · 1 评论 -
python中@property以及描述符descriptor详解
python一直以代码简洁优雅而著称,这篇文章介绍的小技巧,就是如何优雅地对一个类的属性进行赋值和取值。不过不仅仅如此,本文章还为类属性的查找顺序,以及装饰器在类方法的使用打下了基础。文章目录待解决的问题属性变为方法@property装饰器描述符描述符的改进扩展知识点描述符添加额外方法属性查找顺序函数也是描述符待解决的问题先看下面的例子class People: def __init__(self): self.age = 3if __name__ == '__main_原创 2020-07-15 19:42:54 · 521 阅读 · 0 评论 -
python3中各类变量的内存堆栈分配和函数传参区别实例详解
对内存的高效利用一直是程序编写过程中的一个亘古不变的话题,这一节我们就用实际操作来看看python3中各种变量的内存使用区别,以及它们在进行函数传参时候的注意事项。文章目录内存中的堆栈不同数据类型内存使用不可变对象小整数和大整数短字符串和长字符串浮点数元组布尔值可变对象匿名对象变量名赋值给变量函数传参总结内存中的堆栈因为是动态语言,python中的所有变量内容都存在堆(heap)中,而变量名只是堆中内容的引用,存放在栈(stack)中,便于用户去间接操作堆中的数据。这对于后面理解函数参数的传递非常重要原创 2020-06-25 16:46:23 · 3044 阅读 · 0 评论 -
善用docstring和annotations配合pycharm自动提示让python函数使用更便捷
在使用别人定义的函数的时候,大多数时候我们不关心函数具体实现,而只想知道每个参数以及返回值的类型和说明。令人欣喜的就是pycharm已经集成了参数类型提示和说明的快捷键功能,不过这需要被调用的函数在定义的时候按照一定的格式去标注docstring和annotations。下面我们就一起来了解下这些都是啥,让我们以后自己定义的函数也能使用起来更便捷。我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。文章目录什么是docstrin原创 2020-06-02 21:46:08 · 3110 阅读 · 0 评论 -
pycharm连接远程服务器进行django项目自动上传和部署
通常想到自动部署,人们想到的都是将代码用git传到repo,然后通过repo自动部署到服务器中,这种方式对于多人协作是非常友好的。但是如果只是想简单地将本地项目目录实时同步到远程服务器,达到实时测试的目的,pycharm给我们提供了一种更为简洁有效的方式。我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。文章目录操作环境准备工作Pycharm配置ssh配置目录映射配置自动创建不存在目录设置自动同步效果演示总结操作环境本地环原创 2020-05-27 16:46:46 · 1770 阅读 · 0 评论 -
python目录中的__init__.py文件详解
python中使用import来将别的模块导入到自己的脚本里面使用,那么什么样的文件才能被识别为模块,又该如何制作自己的模块呢。这一切都得从__init__.py这个文件说起。我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。文章目录什么是模块?\_\_init\_\_.py文件简化导入筛选导入内容\_\_all\_\_变量初始化操作制作自己的模块什么是模块?模块(module),就是一组共同实现一小块功能的python文原创 2020-05-26 17:34:29 · 9193 阅读 · 2 评论 -
python中__file__变量和path模块的配合使用
一个项目中的目录结构往往很复杂,模块之间互相调用来调用去。同时,相同的文件结构也会被部署到不同的环境。这也就意味着,引用文件的时候如果采用绝对路径的方式,到了后期是很难维护的。这一节我们来看看使用相对路径的一些方法。我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。文章目录\_\_file\_\_变量path模块总结__file__变量首先是__file__变量,其表示的是使用该变量的文件的完整路径。有目录结构如下(f原创 2020-05-25 22:23:16 · 1721 阅读 · 1 评论 -
python3中StringIO和BytesIO使用方法和使用场景详解
说起IO,很多人首先想到的是磁盘中的文件,将磁盘中的文件读到内存以及内存内容写入文件。但是还有一种内存和内存之间的IO,叫类文件对象,这一篇我们就一起来学习下python中的两个类文件对象:StringIO和BytesIO。我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。文章目录内存中的IO操作环境标志位Strin...原创 2020-04-20 16:23:25 · 28467 阅读 · 5 评论 -
一篇文章汇总Python装饰器全知识图谱(使用场景,基本用法,参数传递,闭包操作,类装饰器和AOP)
装饰器,是将Python代码变得低耦合,简洁优美的必经之路,同时也是实现闭包操作,AOP编程的基础。这一篇博客从装饰器的产生原因,基本使用,延伸到参数传递,闭包操作,最后到类装饰器和AOP,希望能用我自己掌握的知识,尽量详细的对装饰器的知识点进行全面总结和梳理。我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。文章目...原创 2020-04-12 00:35:50 · 356 阅读 · 0 评论 -
Python中各种下划线使用总结和实例详解
Python中经常出现各种单下划线,双下划线,而且有的在前有的在后,有的是约定俗成的用法,有的则会强制对外隐藏。这一篇我们就一起来把各种下划线的用法说清楚。我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。文章目录五种下划线的用法操作环境前置单下划线,例如`_var`后置单下划线,例如`var_`前置双下划线,例如`...原创 2020-04-10 16:21:45 · 724 阅读 · 1 评论 -
Centos7安装pycharm 2019.3并配置桌面快捷方式详解
我的Centos7环境准备用来做Django开发了,之前只装了Anaconda3,还差一个IDE。大佬们可以用vim去安装插件,我这种小白选择直接安装广受好评的pycharm。这篇文章我们就一起来看看如何在centos7中安装pycharm。我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。文章目录下载安装包安装创建桌面...原创 2020-02-24 16:56:01 · 1963 阅读 · 1 评论 -
pycharm的debug断点调试功能实例详解
相信很多朋友都和我一样,在初期调试python程序的时候喜欢用print大法,觉得哪个地方比较可疑,就在前中后加一堆print。但如果使用IDE,就可以更高效地完成这一任务,今天我们就以pycharm为例一起来看看简单而高效的断点调试到底该如何操作。我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。文章目录什么是debu...原创 2020-02-22 00:44:54 · 12881 阅读 · 4 评论