
python基础
文章平均质量分 52
gymaisyl
这个作者很懒,什么都没留下…
展开
-
Python线程安全和互斥锁
在没有互斥锁的情况下,下面的代码结果from threading import Thread, Lockimport timeg_num = 0def test1(): global g_num for i in range(10000000): g_num += 1 print("---test1---g_num=%d" % g_num)def test2(): global g_num for i in range(10000原创 2020-12-14 15:08:27 · 194 阅读 · 1 评论 -
列表生成式和列表生成器
列表生成式a = [(i, j) for i in range(0, 5) for j in range(6, 10)]print(a)列表生成器b = ((i, j) for i in range(0, 5) for j in range(6, 10))print(b)结果:[(0, 6), (0, 7), (0, 8), (0, 9), (1, 6), (1, 7), (1, 8), (1, 9), (2, 6), (2, 7), (2, 8), (2, 9), (3, 6), (3, 7原创 2020-12-11 16:15:53 · 204 阅读 · 0 评论 -
python 函数名指向改变解析 帮助装饰器代码的理解
函数名仅仅是个变量,只不过指向了定义的函数而已,所以才能通过 函数名() 调用,如果 函数名=xxx 被修改了,那么当在执行 函数名()时,调用的就不知之前的那个函数了 #### 第一种 ####def fun1(): print('fun1') fun1 # 表示是函数的指向(地址)fun1() # 表示执行foo函数#### 第二个####def fun2()...原创 2018-10-11 22:17:34 · 371 阅读 · 0 评论 -
python 中的 闭包 与 函数的区别
定义:(重点在定义)在外部函数里面定义一个内部函数,并且这个内部函数用到了外部函数的变量,那么将这个内部函数和用到的一些变量统称为闭包。首先看一个闭包的实例:def lines(a, b): def line(x): return a * x + b return line line1 = lines(1, 1) # 可以得到 直线1:y=x+1...原创 2018-10-11 21:41:10 · 1757 阅读 · 1 评论 -
python中 关于 __init__方法 和 __new__方法 区别
关于python中面向对象里面的__init__ 和 __new__的区别首先。官方给出的解释如下:__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值。__new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。也就是说:__new__方法才是实际意义上的构造函数;而__init__ 方法为初始化方法;即:1. ...原创 2018-10-11 21:03:53 · 804 阅读 · 0 评论 -
python中读取文件函数read()、readline()、readlines()的区别
python中读取文件函数–>read()、readline()、readlines()的区别关于以上三种函数的区别,下面使用代码将运行结果进行进行比较:先创建一个00.txt的文本文件,文件内容如下:111111111222222222333333333444444444read()# 使用 read() 函数读取文本内容时:f = open('00.txt', 'rb...原创 2018-10-11 20:30:23 · 3303 阅读 · 2 评论 -
python日期校验
def datetime_verify(date): """判断是否是一个有效的日期字符串""" try: if ":" in date: time.strptime(date, "%Y-%m-%d %H:%M:%S") else: time.strptime(date, "%Y-%m-%d") ...原创 2019-05-28 17:55:27 · 4480 阅读 · 0 评论 -
python文件操作
r,r+,w,w+,a,a+表达的含义wwith open("addr.csv", 'w', encoding="utf-8") as f: header = "this is test for w" f.write(header)执行结果:rwith open("addr.csv", 'r', encoding="utf-8") as f: content...原创 2019-06-13 20:20:42 · 167 阅读 · 0 评论 -
python中,运行Linux命令,获取输出到终端的数据
python中,运行Linux命令,运行正确获取运行结果,运行错误获取错误提示subprocess模块—Popencommand = "ping -c 1 baidu.com "back = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()pr...原创 2019-06-03 09:22:35 · 10055 阅读 · 1 评论 -
普通文本文件转换成python使用的字典、列表类型数据 yaml
如何将普通文件内容转化为我们python能够进行操作的字典或者列表呢?如下图所示案例,使用mii-tool获取当前linux端口数量,但是,我们现在想把所有的端口存储在列表中(eht0, eth1, eth2,eth3)首先, 将mill-tool命令行输出重定向到文件中,文件后缀名为yamlmii-tool > test.yaml其次,获取test.yaml文件的绝对路径pw...原创 2019-02-25 09:39:44 · 2603 阅读 · 0 评论 -
base64模块
概念Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2^6=64,所以每6个比特为一个单元,对应某个可打印字符。3个字节有24个比特,对应于4个Base64单元,即3个字节可由4个可打印字符来表示。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。Base64常用于在通常处理文本数据的场合,表示、传...原创 2018-12-01 18:30:24 · 372 阅读 · 0 评论 -
一个列表的元素是否包含另一个列表元素
new_list = [1, 2, 3]old_list = [3, 4, 5]judge = [False for c in new_list if c not in old_list ]if judge: # judge不是None,则表示new_list中有元素是不在old_list中的原创 2019-03-04 17:09:18 · 2908 阅读 · 0 评论 -
python语法糖 -- 列表正负数的排序
有这样一个列表:lst = [1, -2, 10, -12, -4, -5, 9, 2]现在要求:将列表进行排序,正数在前,负数在后,并且分别按绝对值从小到大,要求的输出结果是:[1, 2, 9, 10, -2, -4, -5, -12]...原创 2018-12-02 09:21:13 · 5874 阅读 · 0 评论 -
python2和python3中字符串转16进制
a= '6A0989D1221D3625AAFA86227DFD2350'在python2中:a.decode('hex')在python3bytes.fromhex(a)原创 2019-07-23 09:36:27 · 4236 阅读 · 3 评论 -
base64在python2和python3中的不同使用方式
python2中base64部分源码def b64encode(s, altchars=None): """Encode a string using Base64. s is the string to encode. Optional altchars must be a string of at least length 2 (additional charac...原创 2019-07-23 15:11:09 · 2469 阅读 · 0 评论 -
json和python中的字典的区别与联系
json:json是一种数据的表现形式,是一种数据格式:比如在ajax中的数据接收类型,一般都是json类型的数据格式,也会有txt的数据格式;如下代码所示:$.ajax({ url: '/change_data', type: 'GET', dataType: 'json', // json 为接收服务器返回的数据类型 data:{'code':30026...原创 2018-10-13 14:21:30 · 3924 阅读 · 0 评论 -
字符串反转的方法
本文中介绍的字符串的方法是常用的两种reversed()反转字符串的切片原创 2018-12-19 21:00:38 · 183 阅读 · 2 评论 -
python内置函数 -- sort()
sort()是python中列表拥有的排序方法,是对原列表进行排序的,进行排序操作后,返回的是None案例如下:原创 2018-12-19 21:48:29 · 854 阅读 · 0 评论 -
关于python中的单例
下面将通过一段代码解释一下,如何实现单例:class OnlyOne(object): # 记录第一个被创建对象的引用 instance = None # 记录是否执行过初始化动作 init_flag = False def __new__(cls, *args, **kwargs): # 1. 判断类属性是否是空对象 ...原创 2018-10-24 13:37:23 · 155 阅读 · 1 评论 -
python 中 关于reverse() 和 reversed()的用法介绍
reverse():是python中列表的一个内置方法(也就是说,在字典,字符串或者元组中,是没有这个内置方法的),用于列表中数据的反转;exp:lista = [1, 2, 3, 4]lista.reverse()print(lista)打印结果:[4, 3, 2, 1]其实,lista.reverse() 这一步操作的返回值是一个None,其作用的结果,需要通过打印被作用...原创 2018-11-06 13:30:36 · 180411 阅读 · 8 评论 -
python中join的使用
join的用法:join是python中 字符串 自带的一个方法:官方解释如下:S.join(可迭代) - > str返回一个字符串,该字符串是字符串的串联迭代。 元素之间的分隔符是S.就是可以理解为:将一个包含多个字符串的可迭代对象,转为用分隔符s连接的字符串,案例见下:1.可迭代对象为列表:cc = ''.join(tt)ee = '?'.join(tt)pri...原创 2018-11-06 16:37:11 · 14781 阅读 · 3 评论 -
彻底搞懂python 装饰器, 超详细图文解说
写代码要遵循开放封闭原则封闭:已实现的功能代码块开放:对扩展开放装饰器定义:装饰器本身是一个函数,其作用是对已经封装的函数的功能的增加。备注:下段代码中的【 @start_fun # sums = start_fun(sums), 经过这段代码后,sums函数的指向发生改变–>call_fun】,这段代码如若理解不清晰,可以参考以下链接的解释:def start_...原创 2018-10-11 22:19:49 · 594 阅读 · 0 评论 -
python2和python3的区别 (附带代码解析)
关于input()函数的区别 python2中的input()函数:获取当前输入的内容,并将其作为指令来处理 ; python3中的input()函数:获取当前输入的内容,并将其作为字符串来处理;在pytohn2环境中:在输入中文‘小花’的时候,会显示语法错误;在输入英文‘xiaohua’,会显示没有‘xiaohua’这个变量;在python3环境中:我们可以看到:在...原创 2018-11-25 22:43:14 · 491 阅读 · 0 评论 -
Python实现多属性排序
多属性排序:把需要排序的属性拿出来作为一个 tuple,主要的放前面,次要的放后面。假如某对象有n个属性,那么先按某规则对属性a进行排序,在属性a相等的情况下再按某规则对属性b进行排序,以此类推。终端打印结果如下: 按照属性name进行排序:按照ASCII进行排序,本案例中,按照小写字母的顺序进行排序; 按照属性name和age进行排序:案例中,先斤=进行name进行排序后,再...原创 2018-12-02 09:15:03 · 3322 阅读 · 1 评论 -
Python字典--增删改查/内置方法大全
字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中;键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一;值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组;增字典的增加,是按照:字典名[key] = value删字典的删除,可...原创 2018-12-03 00:12:01 · 326 阅读 · 0 评论 -
python中的字典排序--sorted()
字典的排序:在学习python的时候,了解到相比于列表,字典是一个无序的数据结构,一般都不对其进行排序的。但是要想对字典进行排序,是可以通过sorted()函数进行操作的!关于字典的排序,下面从键key 和 值value 进行代码的运行和分析:【先看代码和执行结果,后面会进行详细的解析】# 先定义一个字典,首先声明注意一点,字典中的值需要为同一种数据类型;比如在本案例中的值都是字符串类型。...原创 2018-10-13 16:12:09 · 126846 阅读 · 6 评论 -
浅拷贝和深拷贝
浅拷贝浅拷贝会创建新对象,其内容非原对象本身的引用,而是原对象内第一层对象的引用。深拷贝深拷贝只有一种形式,copy模块中的deepcopy()函数。深拷贝和浅拷贝对应,深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。因此,它的时间和空间开销要高。不能进行拷贝的情况:对于非容器类型,如数字、字符,以及其他的“原子”类型,没有拷贝一说,产生的都是原对象的引用。可以深拷贝,...原创 2018-11-27 18:14:41 · 157 阅读 · 0 评论 -
python中bool为False的有哪些?
FalseNone0(整数)0.0(浮点数)0.0+0.0j (复数)‘’(空字符串)“”(空字符串)[] (空列表)() (空元组){} {空字典}代码实现如下:原创 2018-12-19 23:17:22 · 1391 阅读 · 0 评论 -
python装饰器传参
原创 2018-12-23 13:11:08 · 923 阅读 · 3 评论 -
python GIL锁,如何解决
GIL锁:全局解释器锁,是由于Cpython解释器自带的;在Cpython解释器中运行的多线程,每个线程在执行的时候,都会先获取一个GIL锁,保证同一时刻只有一个线程可以执行;线程释放GIL锁的情况:在IO操作等可能会引起阻塞的system call之前,可以暂时释放GIL,但在执行完毕后,必须重新获取GIL Python 3.x使用计时器(执行时间达到阈值后,当前线程释放GIL)或Pyth...原创 2018-12-22 08:45:06 · 1583 阅读 · 3 评论 -
python 可迭代序列(列表,元组,字符串),实现邻近去重,顺序不变
码字不易,转载请标明出处…邻近去重代码实现如下:def special_func_order(seq): list_ = [] # 定义一个空列表,用来存储判断后的数据 for i in range(len(seq) - 1): # 假如 len(seq) = 17 , 则range(16) --> 0-16 if seq[i] != seq[...原创 2018-12-20 09:15:57 · 1409 阅读 · 0 评论 -
python中 r'', b'', u'', f'' 的含义
r/R:非转义的原始字符串与普通字符相比,其他相对特殊的字符,其中可能包含转义字符,即那些,反斜杠加上对应字母,表示对应的特殊含义的,比如最常见的”\n”表示换行,”\t”表示Tab等。而如果是以r开头,那么说明后面的字符,都是普通的字符了,即如果是“\n”那么表示一个反斜杠字符,一个字母n,而不是表示换行了。以r开头的字符,常用于正则表达式,对应着re模块。r'input\n' # 非转义...原创 2018-12-19 22:49:07 · 75060 阅读 · 4 评论 -
底层代码实现原理--print
目录(小声bb:不定期更新)1.print调用Python中底层的什么方法2. …1.print调用Python中底层的什么方法:关于python中的print函数,我们可以进入到这个函数里进行查看print的定义如下:def print(self, *args, sep=' ', end='\n', file=None)其中有如下注释:print(value, …, s...原创 2018-10-19 12:34:45 · 4754 阅读 · 4 评论