python基础
文章平均质量分 71
Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
肥叔菌
本博客主要用于记录学习过程中的笔记,每隔一段时间,博主将会将精华内容整合发到知乎、简书上。欢迎关注博主肥叔菌在其他平台上的账号,谢谢。
B站:https://space.bilibili.com/456254145
segmentfault:https://segmentfault.com/u/feishujun/articles
简书:https://www.jianshu.com/u/67bab078551a
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Python入门之——with 类
__enter__ 和__exit__python中实现了__enter__和__exit__方法支持上下文管理器协议。上下文管理器就是支持上下文管理器协议的对象,它是为了with而生。当with语句在开始运行时,会在上下文管理器对象上调用 __enter__方法。with语句运行结束后,会在上下文管理器对象上调用 __exit__方法1.with语句是什么?有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你原创 2022-02-17 12:56:28 · 740 阅读 · 0 评论 -
PostgreSQL数据库高可用patroni源码学习——PatroniLogger类
patroni/log.pyclass PatroniLogger(Thread): DEFAULT_LEVEL = 'INFO' DEFAULT_TRACEBACK_LEVEL = 'ERROR' DEFAULT_FORMAT = '%(asctime)s %(levelname)s: %(message)s' NORMAL_LOG_QUEUE_SIZE = 2 # When everything goes normal Patroni writes only 2原创 2022-02-07 22:10:39 · 907 阅读 · 0 评论 -
Python3入门——内置函数一
abs(x) 返回一个数的绝对值。参数可以是整数、浮点数或任何实现了 abs() 的对象。如果参数是一 个复数,则返回它的模。all(iterable) 如果 iterable 的所有元素均为真值(或可迭代对象为空)则返回 True 。any(iterable) 如果 iterable 的任一元素为真值则返回 True。如果可迭代对象为空,返回 False。ascii(object) 就像函数repr(),返回一个对象可打印的字符串,但是repr() 返回的字符串中非 ASCII 编码的 字符,会使.原创 2022-01-05 21:24:17 · 951 阅读 · 0 评论 -
PostgreSQL数据库高可用patroni源码学习——main入口
patroni.py作为patroni服务的主入口,其代码仅有7行,主要逻辑就是从patroni模块导入main函数,然后执行main()函数。而patroni模块的main函数是在patroni文件夹下的__init__.py的第179行,代码细节如下所示。def main(): if os.getpid() != 1: check_psycopg() return patroni_main() # Patroni started with PID原创 2022-01-04 23:27:20 · 1416 阅读 · 0 评论 -
Python3入门之——abc模块
abc:Abstract Base Classes作用:在代码中定义和使用抽象基类进行API检查。为什么使用abc?Abstract base classes由一组接口组成,检查比hasattr()更严格。通过定义一个抽象基类,可以为一组子类定义一个通用的API。这对于第三方为应用提供插件等非常有用,另外当您在一个大型的团队中工作或在一个大型的代码库中,同时将所有的类放在您的头脑中是困难或不可能的时,它也可以帮助您。abc怎么工作abc通过把基类中的方法标记为抽象方法,并且注册具体类为基类的实现的原创 2022-01-04 23:33:51 · 1075 阅读 · 0 评论 -
Greenplum Python工具库gpload学习——gpload类
gpload.py代码写得挺简洁的,主要逻辑集中中gpload类中,其中run函数是最为重要的,而run函数主要逻辑就是调用run2函数。if __name__ == '__main__': g = gpload(sys.argv[1:]) g.run() sys.stdout.flush() sys.stderr.flush() os._exit(g.exitValue)gpload构造函数 def __init__(self,argv):原创 2021-11-02 23:45:56 · 1160 阅读 · 0 评论 -
Python3入门之——内置命名空间中的少数常量
有少数的常量存在于内置命名空间中。它们是:False:bool 类型的假值。给 False 赋值是非法的并会引发SyntaxError。True:bool 类型的真值。给 True 赋值是非法的并会引发SyntaxError。None:NoneType 类型的唯一值。None 经常用于表示缺少值,当因为默认参数未传递给函数时。给 None赋值是非法的并会引发SyntaxError。NotImplemented:双目运算特殊方法(如 __eq__(), __lt__(), __add__(), _原创 2021-06-27 13:45:12 · 320 阅读 · 0 评论 -
Python3入门之——由site模块添加的常量
site 模块(在启动期间自动导入,除非给出 -S 命令行选项)将几个常量添加到内置命名空间。它们对交互式解释器 shell 很有用,并且不应在程序中使用。quit(code=None)exit(code=None):当打印此对象时,会打印出一条消息,例如“Use quit() or Ctrl-D (i.e. EOF) to exit”,当调用此对象时,将使用指定的退出代码来引发SystemExit。copyrightcredits:打印或调用的对象分别打印版权或作者的文本。license:当原创 2021-06-27 13:50:26 · 632 阅读 · 0 评论 -
Python入门之——Package内的__main__.py和__init__.py
概念假设一个最简单的Package如下:├──pkg│ ├── __init__.py│ ├── __main__.py如果你希望 python 将一个文件夹作为 Package 对待,那么这个文件夹中必须包含一个名为 __init__.py 的文件,即使它是空的。如果你需要 python 将一个文件夹作为 Package 执行,那么这个文件夹中必须包含一个名为 __main__.py 的文件。在实际中,可以将pkg作为一个文件夹执行:python pkg也可以将pkg作为一个原创 2021-06-11 23:23:00 · 1613 阅读 · 4 评论 -
Python入门之——进程multiprocessing(Process 类)简介
os.fork()方法:创建新进程要知道,每个 Python 程序在执行时,系统都会生成一个新的进程,该进程又称父进程(或主进程)。在此基础上,Python os 模块还提供有 fork() 函数,该函数可以在当前程序中再创建出一个进程(又称子进程)。也就是说,程序中通过引入 os 模块,并调用其提供的 fork() 函数,程序中会拥有 2 个进程,其中父进程负责执行整个程序代码,而通过 fork() 函数创建出的子进程,会从创建位置开始,执行后续所有的程序(包含创建子进程的代码)。注意,os.fork原创 2021-04-12 13:02:00 · 8702 阅读 · 0 评论 -
Python入门之——线程的生命周期(新建、就绪、运行、阻塞和死亡)
当程序中包含多个线程时,CPU 不同一直被特定的线程霸占,而是轮流执行各个线程。那么,CPU 在轮换执行线程过程中,线程都经历了什么呢?线程从创建到消亡的整个过程,可能会历经 5 种状态,分别是新建、就绪、运行、阻塞和死亡,如图 1 所示。线程的新建和就绪状态无论是通过 Thread 类直接实例化对象创建线程,还是通过继承自 Thread 类的子类实例化创建线程,新创建的线程在调用 start() 方法之前,不会得到执行,此阶段的线程就处于新建状态。从图 1 可以看出,只有当线程刚刚创建,且未调用 s原创 2021-04-12 12:37:29 · 836 阅读 · 0 评论 -
Python入门之——线程threading(Thread类)简介
几乎所有的操作系统都支持同时运行多个任务,每个任务通常是一个程序,每一个运行中的程序就是一个进程,即进程是应用程序的执行实例。现代的操作系统几乎都支持多进程并发执行。注意,并发和并行是两个概念,并行指在同一时刻有多条指令在多个处理器上同时执行;并发是指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。例如,程序员一边开着开发工具在写程序,一边开着参考手册备查,同时还使用电脑播放音乐……除此之外,每台电脑运行时还有大量底层的支撑性程序在运行……这些进程看上去原创 2021-04-12 12:33:15 · 5911 阅读 · 0 评论 -
Python入门之——文件内容差异对比difflib模块
difflib模块实现文件内容差异对比,作为Python的标准库模块,无须安装,作用是对比文件之间的差异,且支持输出可读性比较强的HTML文档,与Linux下的diff命令相似。两个字符串的差异对比Differ()类对两个字符串进行比较,另外difflib的SequenceMatcher()类支持任意类型序列的比较,HtmlDiff()类支持将比较结果输出为HTML格式。生成美观的对比HTML格式文档采用HtmlDiff()类的make_file()方法就可以生成美观的HTML文档对比Ng原创 2021-03-19 20:41:08 · 1635 阅读 · 0 评论 -
Python入门之——DNS处理模块dnspython
dnspython(http://www.dnspython.org/)是Python实现的DNS工具包,它支持几乎所有的记录类型,可以用于查询、传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩展DNS)。原创 2021-03-19 20:22:39 · 2929 阅读 · 0 评论 -
Python入门之——IPy模块
IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包含网络性能、可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等。Python提供了一个强大的第三方模块IPy(https://github.com/haypo/python-ipy/),最新版本为V0.81。IPy模块可以很好地辅助我们高效完成IP的规划工作。源码安装wget https://pypi.pythin.org/packages/source/I/I原创 2021-03-17 22:07:34 · 2777 阅读 · 1 评论 -
Python3入门之——Python虚拟环境的原理及使用详解
Python的虚拟环境极大地方便了人们的生活。本指南先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理。注意:本指南在macOS Mojave系统上使用最新版本的Python 3.7.x。1. 为什么使用虚拟环境?虚拟环境为一系列潜在问题提供简单的解决方案,尤其是在以下几个方面:允许不同的项目使用不同版本的程序包,从而解决依赖性问题。例如,可以将Project A v2.7用于Project X,并将Package A v1.3用于Project Y。通过捕获需求文件中的所原创 2021-03-15 22:35:11 · 2302 阅读 · 1 评论 -
Python入门之——binascii模块
用处主要用于二进制和ASCII互相转换(Convert between binary and ASCII );包含的函数函数描述a2b_uu(string)将以ascii编码的一行数据转化为二进制,并且返回二进制数据.b2a_uu(data)将二进制数据转化为一行以ascii编码的字符,date的最大长度为45.a2b_base64(string)将一块base64的数据转换为二进制数据,并返回该二进制数据b2a_base64(string)与上面相反原创 2021-03-12 19:52:32 · 10584 阅读 · 2 评论 -
Python入门之——Crypto模块
前言最开始想尝试在windows下面安装python3.6,虽然python安装成功,但在安装Cryto模块用pip3 install pycrypto老是会报错。老夫搞了半天,最终决定在linux下面去做。以下流程限于linux系统:Crypto不是自带的模块,需要下载。http://www.voidspace.org.uk/python/modules.shtml#pycrypto我下载了之后,发现下载的是crypto而不是Crypto(就是差个首字母大小写)而crypto.Cipher而又原创 2021-03-12 19:39:00 · 10432 阅读 · 0 评论 -
Python入门之——Paramiko模块
简介ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography)。有了Paramiko以后,我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对远程服务器进行操作。由于paramiko属于第三方库,所以需要使用如下命令先行安装pip3 install paramiko。Paramiko简介paramiko包含两个核心组件:SSHClient和SFTPClient。SSHC原创 2021-01-23 13:05:36 · 3615 阅读 · 0 评论 -
Python入门之——pexpect模块
pexpect可以理解为Linux下的expect的Python封装、通过pexpect可以实现对ssh、ftp、passwd、telnet等命令行进行自动交互,而无需人工干涉来达到自动化的目的。比如我们可以模拟一个FTP登录时所有交互,包括输入主机地址、用户名、密码、上传文件等,待出现异常还可以进行尝试自动处理。pexpect的核心组件下面介绍pexpect的几个核心组件包括spawn类、run函数及派生类pxssh等的定义及使用方法。spawn类spawn是pexpect的主要类接口,功能是启动原创 2021-01-04 13:08:43 · 5820 阅读 · 0 评论 -
Python入门之——getpass模块
getpass模块提供了平台无关的在命令行下输入密码的方法; 该模块主要提供:两个函数: getuser, getpass一个报警: GetPassWarning(当输入的密码可能会显示的时候抛出,该报警为UserWarning的一个子类)备注: 上面为密码显示时抛出的报警getpass.getuser()该函数返回登陆的用户名,不需要参数该函数会检查环境变量LOGNAME,USER,LNAME 和USERNAME, 以返回一个非空字符串。如果这些变量的设置为空的话,会从支持密码的数据库中原创 2021-01-01 21:11:49 · 4041 阅读 · 0 评论 -
Python3入门之——optparse模块
Python 有两个内建的模块用于处理命令行参数:一个是 getopt,《Deep in python》一书中也有提到,只能简单处理 命令行参数;另一个是 optparse,它功能强大,而且易于使用,可以方便地生成标准的、符合Unix/Posix 规范的命令行说明。示例下面是一个使用 optparse 的简单示例:from optparse import OptionParser [...] parser = OptionParser() parser.add_option("-f", "原创 2021-01-01 20:49:22 · 5195 阅读 · 0 评论 -
Python入门之——系统性能信息模块psutil
psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。目前支持32位和64位的Linux、Windows、OS X、FreeBSD和Sun Solaris等操作系原创 2020-12-20 13:00:12 · 3675 阅读 · 0 评论 -
Python3入门之——浅拷贝和深拷贝
由于Python使用了对象引用,因此在使用赋值操作符(=)时,并没有进行赋值操作。如果右边的操作数是字面值,比如字符串或数字,那么左边的操作数被设置为一个对象引用,该对象引用将指向存放字面值的内存对象。如果右边的操作数是一个对象引用,那么左边的操作数将设置为一个对象引用,并与右边的操作数指向相同的对象。浅拷贝如果需要组合类型数据(或其他可变对象)的一个单独副本。对于序列,在提取数据片时,数据片总是取自某个数据项的一个单独副本。对于字典与集合而言,这种复制操作可以使用dict.copy()与set原创 2020-09-09 22:35:46 · 5883 阅读 · 0 评论 -
Python3入门之——迭代子
iterable数据类型每次返回其中的一个数据项。任意包含__iter__()方法的对象或任意序列(也即包含__getitem__()方法的对象,该方法接受从0开始的整数参数)都是一个iterable,并可以提供一个迭代子。迭代子是一个对象,该对象可以提供__next__()方法,该方法依次返回每个相继的数据项,并在没有数据项时产生StopIteration异常。数据项返回的顺序依赖于底层的iterable。对列表与元组等情况,数据项的返回通常从第一个数据项(索引位置0)开始依序返回,但是有些迭代子原创 2020-09-08 23:18:41 · 5975 阅读 · 0 评论 -
Python入门之——logging日志模块 通过gppylib.gplog学习logging模块使用
gppylib.gplog在文件lib/python/gppylib/gplog.py下。该模块包含一些建立python内建logging模块的帮助函数。主要是方便tool、helper等模块建立各自的Logger(setup_helper_tool_logging和setup_tool_logging函数)。我们通过一个例子来对该文件中相关函数进行分析。 from gppylib import gplog logger = gplog.setup_tool_logging(EXECNAME, ho原创 2020-09-03 13:09:06 · 6504 阅读 · 0 评论 -
学习Python之Anconda安装第3方库jieba
jieba库是一款优秀的 Python 第三方中文分词库,jieba 支持三种分词模式:精确模式、全模式和搜索引擎模式,下面是三种模式的特点。精确模式:试图将语句最精确的切分,不存在冗余数据,适合做文本分析全模式:将语句中所有可能是词的词语都切分出来,速度很快,但是存在冗余数据搜索引擎模式:在精确模式的基础上,对长词再次进行切分jieba库的安装Anaconda下安装安装jieba:conda install -c conda-forge jiebapip安装在联网状态下,在命令行下输入原创 2020-05-14 21:58:02 · 8825 阅读 · 1 评论 -
Redhat 5.6下安装Anaconda3
直接下载速度太慢了清华大学开源镜像站https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=M&O=D,找以Linux-x86_64.sh结尾的最新文件,比如我选此时最新Anaconda3-2020.02-Linux-x86_64.sh安装bash Anaconda3-2020.02-Linux-x86_64.sh...原创 2020-04-23 21:15:34 · 9366 阅读 · 5 评论 -
Pexpect version 4.8--API Overviews
Pexpect is a pure Python module for spawning child applications; controlling them; and responding to expected patterns in their output. Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a child application and control it as if a hum原创 2020-08-04 23:09:24 · 6926 阅读 · 0 评论 -
Python使用MongoDB一
在PyCharm中安装Mongo Plugin在PyCharm中的菜单,依次选择File命令->选择settings命令->选择plugins命令->选择browse repositories命令->输入mongo,然后选择Mongo Plugin。重启PyCharm,可以在右侧看到Mongo Explorer。如果没有这个窗口,可以将鼠标光标停留在左下角的图标上,然后在...原创 2020-04-20 11:34:14 · 9104 阅读 · 0 评论 -
Python3入门之——数值类型
Integral类型Python提供了两种内置的Integral类型,即int与bool。整数与布尔型值都是固定的,但由于Python提供了增强的赋值操作符,是的这一约束极少导致实际问题。在布尔表达式中,0与False表示False,其他任意整数与true表示true。在数字表达式中,True表示1,False表示0。整数对象的创建可以通过给变量赋字面意义上的值,或将相关的数据类型作为函数进行调用,比如x=int(17)。使用数据类型创建对象时,有3种用例:不适用参数调用数据类型函数,这种情原创 2020-08-19 22:02:53 · 6667 阅读 · 0 评论 -
Python模块问题:ImportError: cannot import name ‘PILLOW_VERSION‘ from ‘PIL‘
在Anaconda中使用命令行pip install torchvision 安装了torchvision模块。安装成功在spyder中运行 import torchvision,报错,如下:报错解释:torchvision在运行时要调用PIL模块,调用PIL模块的PILLOW_VERSION函数。但是PILLOW_VERSION在Pillow 7.0.0之后的版本被移除了,Pillow 7.0.0之后的版本使用__version__函数代替PILLOW_VERSION函数。打开报错提示中的文件路径原创 2020-07-19 15:47:00 · 12599 阅读 · 2 评论 -
Python3入门之——字符串
字符串使用固定不变的str数据类型表示的,其中存放Unicode字符序列。str数据类型可以作为函数进行调用,用于创建字符串对象——参数为空时返回一个空字符串,参数为非字符串类型时返回该参数的字符串形式,参数为字符串时返回该字符串的拷贝。str()函数也可以用作一个转换函数,此时要求第一个参数为字符串或可以转换为字符串的其他数据类型,其后跟随至多两个可选的字符串参数,其中一个用于指定要使用的编码格式,另一个用于指定如何处理编码错误。text = """A triple quoted string lik原创 2020-08-21 20:05:33 · 6634 阅读 · 1 评论 -
Python3入门之——集合类型
set也是一种组合数据类型,支持成员关系操作(in)、对象大小计算操作符(len()),并且是iterable。集合数据类型至少提供一个set.isdisjoin()方法,支持比较,也支持为逻辑操作(在集合用于联合、交叉等上下文中使用)。可变的set类型固定的frozenset类型...原创 2020-08-26 21:45:39 · 6421 阅读 · 0 评论 -
Python3入门之——映射类型
映射是键值数据项的组合原创 2020-08-31 23:20:02 · 8262 阅读 · 0 评论 -
Python入门之——getopt模块
getopt.getopt(args, options[, long_options])对于短格式options,-号后要紧跟一个选项字母。如果还有此选项的附加参数,可以用空格分开,也可以不分开,长度任意,可以用引号(比如-uroot、-u root、-u"root"、-u’root’、-u “root”、-u ‘root’)。对于长格式long_options,–号后要紧跟一个单词。如果还有参数要附加,后面要紧跟=,再加上参数,等号前后都不能有空格。?vrJ:p:u:h:f: 也可以写为 -?-v-原创 2020-09-01 13:14:58 · 7042 阅读 · 0 评论 -
Python3入门之——序列类型
序列类型支持成员关系操作符(in)、大小计算函数(len)、分片([]),并且是可迭代的。Python提供了5种内置的序列类型:bytearray、bytes、list、str与tuple。元组tuple元组是个有序的序列,其中包含0个或多个对象引用。元组支持与字符串一样的分片与步距的语法,这使得从元组中提取数据项比较容易。元组是固定的,不能替换或删除其中包含的任意数据项。可以使用list()转换函数将其转换为列表。tuple数据类型可以作为一个函数调用,不指定参数将返回一个空元组,使用tuple作为原创 2020-09-01 23:14:53 · 6915 阅读 · 0 评论 -
Python3入门之一
Python3入门之一Python标识符大小写敏感。基本数据类型:int类型:Python所能表示的整数大小只受限于机器内存,而非固定数量的字节数。str类型字符串可以使用双引号或单引号封装-只要字符串头尾使用的符号是对称的。Python使用方括号[]来存取字符串等序列中的某一项,索引位置是从0开始计数的,例如"giraffe"[0]。字符就是指长度为1的字符串。原创 2020-04-15 14:20:12 · 8759 阅读 · 0 评论 -
Python入门之——logging日志模块 Basic Logging Tutorial
logging — Logging facility for Python 源代码位置:Lib/logging/__init__.py该模块定义函数和类,这些函数和类为应用程序和库实现了灵活的事件日志记录系统。由标准库模块提供的日志记录API的主要好处是所有Python模块都可以参与日志记录,因此您的应用程序日志可以包括您自己的消息以及与第三方模块的消息集成的消息。下面列出了模块定义的基本类及其功能。Loggers expose the interface that application code原创 2020-09-02 21:35:17 · 6656 阅读 · 0 评论
分享