![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
绿豆_1314
一个追求高高技术的小小测试猿
展开
-
python 在虚拟环境中安装项目依赖requirements.txt
进入到了虚拟环境中:切到虚拟环境目录的Script文件下,输入命令:pip install –r 目录/requirements.txt原创 2018-05-30 15:56:55 · 4385 阅读 · 0 评论 -
python 属性引用:__getattr__和__setattr__
#__getattr__方法是拦截属性点号运算,更确切的说,当通过对未定义(不存在)属性名称和实例进行点号运算时,就会用属性名称作为字符串调用这个方法,如果能通过继承数搜索流程找到这个属性,该方法就不会被调用class empty: def __getattr__(self, attrname): if attrname=='age': return 40...原创 2018-05-25 16:26:01 · 333 阅读 · 0 评论 -
python 模块包
'''模块包python代码的目录就被成为包包导入是吧计算机上的目录变成python的命名空间包导入最左边的部分仍然是sys.path模块搜索路径列表中的一个目录__init__.py包文件包导入语句的路径中的每个目录内都必须有__init__.py文件,否则导入包会失败d:/a/b/c/d.pyd:/a加入到sys.path中import b.c.d导入d.py则a目录中不需要__init__....原创 2018-05-15 13:29:47 · 134 阅读 · 0 评论 -
python 成员关系:__contains__,__iter__和__getitem__
#__contains__优于__iter__优于__getitem__方法#__contains__方法应该把成员关系定义为对一个映射应用键(并且可以使用快速查找),以及用于序列的搜索class Iters: def __init__(self, value): self.data=value def __getitem__(self, i): pr...原创 2018-05-25 15:59:17 · 3095 阅读 · 0 评论 -
python 运算符重载迭代器对象__iter__,__next__
#python中所有的迭代环境都会先尝试__iter__方法,在尝试__getitem__,只有在对象不支持迭代协议时,才会尝试索引#迭代环境是通过调用内置函数iter去尝试寻找__iter__方法来实现的,而这种方法应该返回一个迭代器,如果已经提供了,python会重复调用这个迭代器对象的next方法,直到发生stopIteration异常,如果没有找到__iter__方法,python会改用_...原创 2018-05-25 14:22:28 · 1605 阅读 · 0 评论 -
python 运算符重载__getitem__和__setitem__
class Indexer: def __getitem__(self, index): #重载索引,对于实例的索引运算,会自动调用__getitem__ return index**2x=Indexer()print(x[3]) #9for i in range(5): print(x[i], end=', ') #0, 1, 4, 9, 16, ...原创 2018-05-25 13:22:10 · 2966 阅读 · 0 评论 -
python 函数作用域
变量可以在三个不同的地方分配1. 如果一个变量在def内赋值,它被定位在这个函数之内2. 如果一个变量在一个嵌套的def中赋值,对于嵌套函数来说,他是非本地的3. 如果在def之外赋值,他就是整个文件全局的作用域法则1. 内嵌模块是全局作用域2. 全局作用域的作用范围仅限于单个文件3. 每次对函数的调用都创建了一个新的本地作用域4. 函数中赋值的变量名除非声明为全局变量或非本地变量,否则均为本地变...原创 2018-05-08 12:09:37 · 170 阅读 · 0 评论 -
python 运算符重载
#运算符重载就是让用类写成的对象,可截获并响应用在内置类型上的运算:加法,切片,打印和点号运算等#1. 以双下划线命名的方法(__X__)的特殊钩子,python运算符重载的实现是提供特殊命名的方法来拦截运算,python替每种运算和特殊命名的方法之间,定义了固定不变的映射关系#2. 当实例出现在内置运算时,这类方法会自动调用,例如,如果实例对象继承了__add__方法,当对象出现+表达式内时,该...原创 2018-05-21 13:03:47 · 981 阅读 · 0 评论 -
python 用字符串名称导入模块
#exec将一个代码字符串传递给python解释器以执行modname='string'exec("import "+modname)print(string) #<module 'string' from 'D:\\python3\\lib\\string.py'>#__import__函数来导入modname='sys'string=__import__(modname)pri...原创 2018-05-17 14:48:54 · 1895 阅读 · 0 评论 -
python 模块
import语句:载入模块文件,会执行一次文件内容从而建立其中的内容原创 2018-05-11 11:16:39 · 1118 阅读 · 0 评论 -
python 函数默认可变参数陷阱
def saver(x=[]): x.append(1) print(x) saver()saver()saver()#output[1][1, 1][1, 1, 1]#因为默认列表在def语句执行时被创建,不会每次函数调用都得到一个新的李彪,所以每次新的元素加入后,列表会变大#同上效果def saver():原创 2018-05-10 16:31:07 · 143 阅读 · 0 评论 -
python 函数参数
#不可变参数"通过值"进行传递def f(a): a=99 print(a) b=88f(b) #99print(b) #88#可变对象是通过"指针"进行传递的,如列表,字典def changer(a,b): a=2 b[0]='spam'x=1l=[1,2]changer(x,l)pr原创 2018-05-08 17:33:38 · 235 阅读 · 0 评论 -
python _X和__all__隐藏模块
#最小化from *的破坏:_X和__all__隐藏模块#_X可以防止from *语句导入时把其中的变量名复制出去,但是还是可以通过其他方式来看见该变量名'''eggs.pyx=9999_X=8888'''import syssys.path.append('D:/test')from pkg.eggs import *#print(_X) #builtins.NameError: name ...原创 2018-05-16 14:07:03 · 596 阅读 · 0 评论 -
python虚拟环境 venv
1. 打开cmd命令行模式2. Cd到python安装根目录3. 在项目根目录下新建一个存放虚拟环境的文件夹4. 执行命令python –m venv 虚拟环境目录5. 进入虚拟环境:切到虚拟环境目录的Script文件下,输入命令:activite6. 进入到了虚拟环境...原创 2018-05-30 15:55:54 · 3166 阅读 · 0 评论 -
python 类方法调用、继承和调用超类构造函数
#实例调用 instance.method(args...)#类调用 class.method(instance, args...)class NextClass: def printer(self, text): #可被类的所有实例所继承 self.message=text print(self.message) x=NextClass()x.pri...原创 2018-05-24 14:09:33 · 2648 阅读 · 0 评论 -
python 配置pip下载源
环境:Windows7/10方法:创建pip.ini文件在如下路径C:\Users\Administrator\pip\pip.inipip.ini内容如下:[global]index-url = http://pypi.douban.com/simple/ [install]trusted-host=pypi.douban.comdisable-pip-version-check = true ...原创 2018-06-11 16:31:51 · 1144 阅读 · 0 评论 -
python logging模块
Python 日志模块 logging通过配置文件方式使用vim logger_config.ini[loggers]keys=root,infoLogger,errorlogger[logger_root]level=DEBUGhandlers=infohandler,errorhandler[logger_infoLogger]handlers=infohandlerqualname=info...转载 2018-06-11 11:24:26 · 229 阅读 · 0 评论 -
python 对象持久化
testdemo.pyclass AttrDisplay(): def gatherAtters(self): attrs=[] for key in sorted(self.__dict__): attrs.append('%s=%s'%(key, getattr(self, key))) return ', '.join(a...原创 2018-05-23 16:53:43 · 1088 阅读 · 0 评论 -
python 内省工具
#内省工具是特殊的属性和函数,允许我们访问对象实现的一些内部机制class Person: def __init__(self, name, job=None, pay=0): self.name=name self.job=job self.pay=pay def lastName(self): return self....原创 2018-05-23 14:49:19 · 643 阅读 · 0 评论 -
python 复合对象
#一种常用的编码模式是把对象彼此嵌套以组成复合对象class Person: def __init__(self, name, job=None, pay=0): self.name=name self.job=job self.pay=pay def lastName(self): return self.name.sp...原创 2018-05-23 14:21:50 · 503 阅读 · 0 评论 -
python 类属性
class FirstClass: def setdata(self, value): self.data=value def display(self): print(self.data) x=FirstClass()y=FirstClass()x.setdata('xxx')y.setdata('yyy')x.display() #xx...原创 2018-05-23 13:41:01 · 213 阅读 · 0 评论 -
python logging模块fileConfig读取配置文件报错解决方法
from logging.config import fileConfigimport logging#读取日志文件fileConfig('config/log.ini')db_logger=logging.getLogger('print') fileConfig读取配置文件是报错,如下: raise MissingSectionHeaderError(fpname, lineno, ...原创 2018-06-03 16:58:46 · 2656 阅读 · 0 评论 -
python 混合用法模式:__name__和__main_
#如果文件以顶层文件执行,在启动时,__name__就会设置为字符串__main__#如果文件被导入,__name__就会改设为客户端的模块名'''eggs.pyprint(__name__)'''import eggs #导入eggs,eggs文件中的__name__=eggsprint(__name__) #顶层文件执行,__name__=__main__...原创 2018-05-16 15:28:07 · 145 阅读 · 0 评论 -
python 排序sorted函数
参数iterable:需要排序的可迭代数据如:列表,字典参数cmp:参数key:设置具体按照什么排序,operator.itemgetter(0),如果是字典则0表示key排序,1表示value排序,2则报错 注:需要import operator参数reverse:true表示倒序,false表示顺序返回值:列表待完善原创 2017-12-05 15:33:34 · 288 阅读 · 0 评论 -
python 生成器
'''生成器函数:编写为常规的def语句 ,但是使用yield语句一次返回一个结果,在每次结果之间挂起和继续他们的状态生成器表达式:类似于列表解析,但是,他们返回按需产生结果的一个对象,而不是构建一个结果列表生成器函数yield vs return状态挂起和返回一个值并退出常规函数不同,生成器函数自动在生成值的时刻挂起并继续函数的执行,挂起时保存的状态包含他们的整个本地作用原创 2018-05-10 13:04:49 · 99 阅读 · 0 评论 -
python 列表解析
m=[[1,2,3],[4,5,6],[7,8,9]]col2=[row[1] for row in m] #获取列表m的每个元素的第二个元素的值组成的列表print(col2)print([row[1]+1 for row in m]) #获取列表m的每个元素的第二个元素+1的值组成的列表print([row[1] for row in m if row[1]%2==0]) #原创 2017-10-22 17:25:58 · 397 阅读 · 0 评论 -
python 字符串格式化调用方法
'''字符串对象的format方法使用主体字符串作为模板,并且接受任意多个表示将要根据模板替换的值的参数在主体字符串中,花括号通过位置(例如{1})或关键字(例如{food})指出替换目标及将要插入的参数'''template='{0},{1} and {2}'print(template.format('spam','ham','eggs')) #spam,ham and egg原创 2017-11-30 21:12:32 · 318 阅读 · 0 评论 -
python 字符串格式化表达式
'''格式化字符串在%操作符的左侧放置一个需要进行格式化的字符串,这个字符串带有一个或多个嵌入的转换目标,都以%开头(例如:%d)在%操作符的右侧放置一个(或多个,嵌入到元组中)对象,这些对象将会插入到左侧想让python进行格式化字符串的一个(或多个)转换目标的位置上去'''print('that is %d %s bird'%(1,'dead'))s='Ni'print('the原创 2017-11-30 18:54:33 · 460 阅读 · 0 评论 -
python除法:传统除法,真除法,floor除法
'''x/y 传统除法&真除法2.6版本中对于整数会省去小数,对于浮点数会保持小数部分3.0版本中将会变成真除法无论任何类型都会保持小数部分想要在2.6版本中实现真除法,则需要导入 from __future__ import divisionx//y Floor除法&截断除法不考虑操作对象的类型,总会省略掉结果的小数部分,剩下最小的能整除的整数部分,结果类型依赖于操作数的类型'原创 2017-11-17 15:01:06 · 883 阅读 · 0 评论 -
@property 装饰
@property 可以将Python定义的函数“当做”属性访问如:在获取页面元素的text时python源代码: @property def text(self): """The text of the element.""" return self._execute(Command.GET_ELEMENT_TEXT)['value原创 2017-04-05 13:51:30 · 262 阅读 · 0 评论 -
__slots__魔法
在Python中,每个类都有实例属性。默认情况下Python⽤⼀个字典来保存⼀个对象的实例属性。这⾮常有⽤,因为它允许我们在运⾏时去设置任意的新属性。然⽽,对于有着已知属性的⼩类来说,它可能是个瓶颈。这个字典浪费了很多内存。Python不能在对象创建时直接分配⼀个固定量的内存来保存所有的属性。因此如果你创建许多对象(我指的是成千上万个),它会消耗掉很多内存。不过还是有⼀个⽅法来转载 2017-01-16 12:42:47 · 294 阅读 · 0 评论 -
装饰器
装饰器(Decorators)是Python的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。大多数初学者不知道在哪儿使用它们,所以我将要分享下,哪些区域里装饰器可以让你的代码更简洁。首先,让我们讨论下如何写你自己的装饰器。这可能是最难掌握的概念之一。我们会每次只讨论一个步骤,这样你能完全理解它。转载 2016-12-19 18:53:23 · 198 阅读 · 0 评论 -
python 字典支持交集和并集操作
d=dict(a=1,b=2,c=3)k=d.keys() #dict_keys(['a', 'b', 'c'])del d['a']print(k) #k会动态变化 dict_keys(['b', 'c'])#字典的key是唯一的,支持交集和并集操作,d.values()是不可以的print(k|{'x':4}) #{'c', 'b', 'x'}print(k&{'x原创 2017-12-02 17:37:45 · 6243 阅读 · 0 评论 -
python 浅拷贝&深拷贝
x=[1,[2,3],4]l=x[:] #将x浅复制给y和z,即修改1和4不影响l的值,但是修改嵌套[2,3],l中嵌套的值也会变x[0]=11x[1][0]=22print(l) #[1, [22, 3], 4]print('**************************************')x=[1,[2,3],4]l=list(x) #将x浅复制给原创 2017-12-04 14:33:23 · 159 阅读 · 0 评论 -
python 匿名函数 lambda
#lambda表达式形式:lambda arguments1,arguments2,...argumentsN:expression using argumentsf=lambda x,y,z:x+y+zprint(f(2,3,4)) #9#默认参数也能够在lambda参数中使用,就像在def中使用中一样x=(lambda a='fee',b='fie',c='foe':a+b原创 2017-12-18 17:02:15 · 351 阅读 · 0 评论 -
python 迭代器
#有__next__方法的对象,都认为是可以迭代的,可通过x.__next__()来迭代,当迭代到空行会报错StopIterationf=open('e:/kangyujiao/test.txt')print(iter(f) is f) #文件本身就是迭代器print(f.__next__(),end='')print(f.__next__(),end='')#print(f._原创 2017-12-07 19:52:48 · 147 阅读 · 0 评论 -
python 流程控制语句结构汇总
if 条件语句if : 可嵌套 elif : 可省略 else: 可省略 三元表达式A=Y if X else Z 当X为真执行表达式Y,当X为假执行表达式Z等同于A=X and Y or Zwhile循环while : else: 可省略 for循环for in : else: 可省略原创 2017-12-06 20:55:45 · 210 阅读 · 0 评论 -
python 打印重定向:stdin,stdout,stderr
重定向读取import sysname=input('please enter your name:')print(name)print('please enter your name:')name=sys.stdin.readline() #重定向读取print(name)f=open('e:/kangyujiao/test.txt','r')sys.stdin=fn原创 2017-12-05 17:26:56 · 2615 阅读 · 0 评论 -
python 赋值方式
'''spam='spam' 基本形式spam,ham='spam','ham' 元组赋值运算(位置性)[spam,ham]=['spam','ham'] 列表赋值运算(位置性)a,b,c,d='spam' 序列赋值运算,通用性a,*b='spam' 扩展的序列解包spam=ham='spam' 多目标赋值运算spam+=42 增强赋值运算(相当于spam=原创 2017-12-05 15:08:51 · 1522 阅读 · 0 评论 -
python 多个字符串合并操作"a" 'b' "c"="a"+'b'+"c"=abc
#字符串合并操作s="a" 'b' "c" #合并字符串print(s) #output abcs="a"+'b'+"c" #合并字符串print(s) #output abc原创 2017-11-24 14:16:58 · 2871 阅读 · 0 评论