当我们在Python中写一个class时,如果有一部分的成员变量需要用一个字典来命名和赋值,此时应该如何操作呢?这个场景最常见于从一个文件(比如json、npz之类的文件)中读取字典变量到内存当中,再赋值给一个类的成员变量,或者已经生成的实例变量。 使用__dict__定义成员变量 在python中直接支持了__dict__.update()这样的方法来操作,避免了对locals()、vars()和eval()函数的使用,我们可以直接看这样的一个案例: In[1]:dict_a={'a':1,'b':2} In[2]:dict_b={'c':3} In[3]:classD(object):...

  33Mqsls7cINW   8天前   23   0   0 Python

变量引用顺序 Python引用变量的顺序:当前作用域局部变量->外层作用域变量->当前模块中的全局变量->Python内置变量。 1、global global关键字用来在函数或其他局部作用域中使用全局变量,如果不对全局变量进行修改,那么可以不使用global关键字;如果想要在函数或局部作用域中对全局变量进行修改操作,那么必须在函数或局部作用域中使用global关键字进行声明,否则报错:UnboundLocalError count=1 deffoo():   globalcount如果不加这个那么就会报错   count+=1   print(count) foo() 2...

  33Mqsls7cINW   13天前   17   0   0 Python

operator模块提供了一套与Python的内置运算符对应的高效率函数。 1.函数的种类 函数包含的种类有:对象的比较运算、逻辑运算、数学运算和序列运算 2.比较运算 运算 函数 语法 小于 lt(a,b) a<b 小于等于 le(a,b) a<=b 大于 gt(a,b) a>b 大于等于 ge(a,b) a>=b 等于 eq(a,b) ab 不等于 ne(a,b) a!=b 实例: >>>fromoperatorimport >>>lt(1,2) True >>>le(1,...

  33Mqsls7cINW   19天前   20   0   0 Python

除了执行系统命令外,我们有时还需要动态地执行一些python代码,有经验的朋友就会知道可以使用内置函数eval实现这一需求,如eval("print(__file__)"),这还是比较简单的。 但如果要动态执行一个函数,讲的资料就会少一点,这次就要看这个需求该如何实现。 一、通过eval实现 1通过eval调用同一个类内的函数 classTestA: def__init__(self): self.config_dict={ "be_called_function_name":"self.be_called_function()", } pass defactive_call_functio...

  33Mqsls7cINW   23天前   26   0   0 Python

压缩和解压缩是日常常用的操作,不管是windows上图形界面的操作,还是linux上用命令来进行压缩解压缩,总的而言都还是比较方便的。 但用代码来实现就没做过,近期也得实现代码压缩与解压缩操作,所以就抽时间来研究一下。 一、zip文件压缩和解压缩实现 importos importzipfile 函数功能是zip_file_list所有文件,和zip_dir_list所有目录下的所有文件,被压缩到一个zip_file_name的压缩文件中 defmy_zip_function(zip_file_name,zip_file_list=[],zip_dir_list=[]): 压缩文件最后需要...

  33Mqsls7cINW   27天前   25   0   0 Python

比较判断逻辑是在代码中经常使用的,在Python中常用''和is来做比较判断。 :双等号是用来比较变量所指向内存单元中的值是否相等,它只关心值,并不在意值的内存地址,也就是说可以是两个不同内存地址的值相等。 is:它用来比较两个变量是不是指向同一个内存单元,虽然它也可以比较值,但是它更加关心的是内存地址是否一样,当然内存地址一样值也就是一样的。 关于整数 按照逻辑,下面的代码很正常 >>>a=1 >>>b=1 >>>ab True >>>aisb True >>>id(a) 1570522768 &g...

  33Mqsls7cINW   2024年04月02日   20   0   0 Python

一、sqlite命令 创建数据库:在控制台sqlite3name .databases           查看数据库 .tables         查看表格名 databaseName.dump>dumpName  将数据库存在文本文件dumpName中,恢复就用databaseName<dumpName; attachdatabase'one'as'other'将两个数据库绑定在一起; detachdatabase'name'分离数据库; .schematableName查看表格详情; createtablename;创建表; droptablename;删除表; 二、py...

  33Mqsls7cINW   2024年03月27日   46   0   0 Python

1、生成requirements.txt文件 如果有同环境服务器,可直接生成requirements.txt,会把当前服务器下的包和版本写入文件中。 pipfreeze>requirements.txt 如安装指定包,创建requirements.txt,输入包名版本号//只输入包名,默认最新版本。 例:xlwt1.3.0 2、下载包 在requirements.txt目录下执行命令 pipdownload-rrequirements.txt 执行时可能存在网络问题,下载失败。更换网络或指定源。 pip3download-rrequirements.txt-ihttps://pypi...

  33Mqsls7cINW   2024年03月19日   54   0   0 Python

在python中读取文件常用的三种方法:read(),readline(),readlines() 准备 假设a.txt的内容如下所示: Hello Welcome Whatisthefuck... 一、read([size])方法 read([size])方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象 f=open("a.txt") lines=f.read() printlines print(type(lines)) f.close() 输出结果: Hello Welcome Whatisthefuck... <type'...

  33Mqsls7cINW   2024年03月13日   15   0   0 Python

线程安全 线程安全是多线程或多进程编程中的一个概念,在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。 线程安全的问题最主要还是由线程切换导致的,比如一个房间(进程)中有10颗糖(资源),除此之外还有3个小人(1个主线程、2个子线程),当小人A吃了3颗糖后被系统强制进行休息时他认为还剩下7颗糖,而当小人B工作后又吃掉了3颗糖,那么当小人A重新上岗时会认为糖还剩下7颗,但是实际上只有4颗了。 上述例子中线程A和线程B的数据不同步,这就是线程安全问题,它可能导致非常严重的意外情况发生,我们按下面这个示例来进行说明。...

  33Mqsls7cINW   2024年02月29日   41   0   0 Python

在Python中,我们可以使用bytes和bytearray两种数据类型来处理二进制数据。bytes是一个不可变的序列类型,而bytearray是一个可变的序列类型。本文将介绍如何使用Python来创建、操作和转换bytes和bytearray。 bytes:可以看作是一组二进制数值(0-255)的str序列 bytearray:可以看作是一组二进制数值(0-255)的list序列 创建bytes和bytearray对象 首先,我们需要创建一个bytes或bytearray对象来存储二进制数据。下表展示了创建bytes和bytearray对象的几种方式: 步骤 描述 代码示例 ...

  33Mqsls7cINW   2024年02月22日   55   0   0 Python

函数根据有没有参数,有没有返回值,可以相互组合,一共有4种 无参数,无返回值 无参数,有返回值 有参数,无返回值 有参数,有返回值 一、无参数,无返回值的函数 此类函数,不能接收参数,也没有返回值,一般情况下用来打印提示等类似的功能 defprint_menu(): print('--------------------------') print('王老师点菜系统') print('1.羊肉涮涮锅') print('2.牛肉涮涮锅') print('3.猪肉涮涮锅') print('--------------------------')   二、无参数,有返回值的函数 此类函数,不能...

  33Mqsls7cINW   2024年01月18日   16   0   0 Python

1.导入依赖 '''导入依赖''' frompathlibimportPath importfilecmp 2.函数说明 filecmp.cmp(path1,path2,shallow=True) path1/path2:待比较的两个文件路径。 shallow:默认为True,即只比较os.stat()获取的元数据(创建时间,大小等信息)是否相同,设置为False的话,在对比文件的时候还要比较文件内容。 3.提取待去重文件路径 初始化文件路径列表 path_files_list=[] 遍历 forpathinPath(r'/usr/load/data').iterdir(): 校验...

  33Mqsls7cINW   2024年01月13日   20   0   0 Python

一.最佳线程数的获取: 1、通过用户慢慢递增来进行性能压测,观察QPS(即每秒的响应请求数,也即是最大吞吐能力。),响应时间 2、根据公式计算:服务器端最佳线程数量=((线程等待时间+线程cpu时间)/线程cpu时间)cpu数量 3、单用户压测,查看CPU的消耗,然后直接乘以百分比,再进行压测,一般这个值的附近应该就是最佳线程数量。 二、为什么要使用线程池? 1.多线程中,线程的数量并非越多越好 2.节省每次开启线程的开销 三、如何实现线程池? threadpool模块 concurrent.futures 重写threadpool或者future的函数 vthread模块 1、过去: 使...

  33Mqsls7cINW   2024年01月09日   14   0   0 Python

通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。 所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。 要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator: >>...

  33Mqsls7cINW   2023年12月28日   16   0   0 Python

1.赋值语句的特点 赋值语句创建对象的引用:赋值语句总是创建对象的引用,而不是复制对象。因此,Python中的变量更像是指针,而不是数据储存区域。 变量在首次赋值时会被创建:因此不需要提前声明变量。 变量在引用前必须先赋值:如果引用未赋值的变量会报错 2.赋值语句的形式 (1.普通形式 >>>a='abc'普通形式 >>>b=123 >>>c=[1,2,3] (2.序列赋值 python中"="的右侧可以接受任意类型的序列,也可以是可迭代的对象,只要长度等于左侧序列即可。 >>>(a,b)=('1','2')元组赋值...

  33Mqsls7cINW   2023年12月22日   51   0   0 Python

1.传值和传址的区别 传值就是传入一个参数的值,传址就是传入一个参数的地址,也就是内存的地址(相当于指针)。他们的区别是如果函数里面对传入的参数重新赋值,函数外的全局变量是否相应改变,用传值传入的参数是不会改变的,用传址传入就会改变。 a=1 deff(b): b=2 f(a) print(a) 例如这段代码里面,首先声明a的值为1,把a作为参数传入到函数f里面,函数f里面对b重新赋值为2,如果是传值的形式传入a的话,a的值是不会变的,依然为1,如果以传址的形式(但是这个不是程序员能决定的)传入a,a就会变成2。这个就是传值和传址的区别。 2.Python中的传址和传值是怎样的呢? Pyth...

  33Mqsls7cINW   2023年12月08日   12   0   0 Python

在业务逻辑中有时候会遇到两层for循环的情况,触发某些条件时,需要直接退出两层for循环 而python官方是没有goto语句的那么我们可以这样实现 第一种定义变量flag,根据flag的值做退出 flag=True foriinrange(10): forjinrange(10): ifi+j>15: print(i,j) flag=False break ifnotflag: break 第二种,在方法内用return defttt(): foriinrange(10): forjinrange(10): ifi+j>15: print(i,j) return ttt() ...

  33Mqsls7cINW   2023年12月04日   12   0   0 Python

你可以使用Python中的列表拼接操作来合并两个或多个列表。Python提供了几种方式来实现列表的拼接,包括使用+运算符、extend()方法和列表解析。 以下是这些方法的示例: 1.使用+运算符: list1=[1,2,3] list2=[4,5,6] concatenated_list=list1+list2 print(concatenated_list) 2.使用extend()方法: list1=[1,2,3] list2=[4,5,6] list1.extend(list2) print(list1) 3.使用列表解析: list1=[1,2,3] list2=[4,5,6...

  33Mqsls7cINW   2023年12月01日   15   0   0 Python

要知道经典类和新式类的区别,首先要掌握类的继承 类的继承的一个优点就是减少代码冗余 广度优先和深度优先,这主要是在多类继承的时候会使用到 经典类和新式类的主要区别就是类的继承的方式 经典类遵循深度优先的规则,新式类遵循广度优先的规则。 至于什么是深度优先什么是广度优先,可以看如下示例: classA: defsave(self): print("a") classB(A): defsave(self): print("b") classC(A): defsave(self): print("c") classD(B,C): def__init__(self): pass d=D() d...

  33Mqsls7cINW   2023年11月19日   16   0   0 Python
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~