我们知道Python3.x引入了新的字符串格式化语法。不同于Python2.x的复制代码代码如下:"%s%s"%(a,b)Python3.x是复制代码代码如下:"{0}{1}".format(a,b)今天我在用MySQLdb时,需要用带参数的复制代码代码如下:cursor.execute(sql,param)语句来完成SQL操作。被其他文章的陈旧说法给误导,用了复制代码代码如下:cursor.execute('insertintotestvalues(%s
系统 2019-09-27 17:48:45 2042
一数据结构和GIL1queue标准库queue模块,提供FIFO的queue、LIFO的队列,优先队列Queue类是线程安全的,适用于多线程间安全的交换数据,内部使用了Lock和Condition为什么说容器的大小不准确,其原因是如果不加锁,是不可能获取到准确的大小的,因为你刚读取了一个大小,还没取走,有可能被就被其他线程修改了,queue类的size虽然加了锁,但是依然不能保证立即get,put就能成功,因为读取大小和get,put方法是分来的。2GIL
系统 2019-09-27 17:48:10 2042
1.函数的动态参数1.1*args位置参数动态传参defchi(*food):print("我要吃",food)chi("大米饭","小米饭")结果:我要吃('大米饭','小米饭')#多个参数传递进去.收到的内容是元组tuple1.2**kwargs关键字参数动态传参deffunc(**kwargs):print(kwargs)func(a=1,b=2,c=3)func(a=1,b=2)结果:{'a':1,'b':2,'c':3}{'a':1,'b':2}
系统 2019-09-27 17:47:53 2042
在python的官方文档中:getattr()的解释如下:getattr(object,name[,default])Returnthevalueofthenamedattributeofobject.namemustbeastring.Ifthestringisthenameofoneoftheobject'sattributes,theresultisthevalueofthatattribute.Forexample,getattr(x,'fooba
系统 2019-09-27 17:47:19 2042
登录流程:实例化一个driver,然后driver.get()发送请求最重要的:切换iframe子框架,因为豆瓣的网页中的登录那部分是一个ifrme,必须切换才能寻找到对应元素利用selenium切换到账号密码登录利用selenium输入账户和密码利用selenium点击登录按钮然后利用字典推导式保存了一下cookie代码实现:importtimefromseleniumimportwebdriver#实例化driverdriver=webdriver.C
系统 2019-09-27 17:47:06 2042
importosimportsysimportstring#以指定模式打开指定文件,获取文件句柄defgetFileIns(filePath,model):print("打开文件")print(filePath)print(model)returnopen(filePath,model)#获取需要处理的文件defgetProcFile(path):returnos.listdir(path)#判断是否满足某个条件,如果满足则执行defisTrue(outF
系统 2019-09-27 17:47:04 2042
本文所述的Python实现冒泡,插入,选择排序简单实例比较适合Python初学者从基础开始学习数据结构和算法,示例简单易懂,具体代码如下:#-*-coding:cp936-*-#python插入排序definsertSort(a):foriinrange(len(a)-1):#printa,iforjinrange(i+1,len(a)):ifa[i]>a[j]:temp=a[i]a[i]=a[j]a[j]=tempreturna#Python的冒泡排序d
系统 2019-09-27 17:46:45 2042
通俗的来说,Python中所谓的命名空间可以理解为一个容器。在这个容器中可以装许多标识符。不同容器中的同名的标识符是不会相互冲突的。理解python的命名空间需要掌握三条规则:第一,赋值(包括显式赋值和隐式赋值)产生标识符,赋值的地点决定标识符所处的命名空间。第二,函数定义(包括def和lambda)产生新的命名空间。第三,python搜索一个标识符的顺序是"LEGB"。所谓的"LEGB"是python中四层命名空间的英文名字首字母的缩写。最里面的一层是L
系统 2019-09-27 17:46:43 2042
读取一个已经保存了的字典f=open('dict_th','r')a=f.read()dict_hi=eval(a)f.close()保存一个字典dict={}list1=[]list2=[]forlineinlines:line=line.strip()if">"inline:list1.append(line)else:list2.append(line)foriinrange():dict[list1[i]]=list2[i]f6=open("dic
系统 2019-09-27 17:46:38 2042
在程序运行的过程中,所有的变量都是在内存中,比如定义一个dict1={“name”:“zhangsan”,“age”:20},我们对name属性进行修改,改"wangwu",但是一旦程序结束,变量所占用的内存就会被操作系统全部回收,如果没有把修改后的name存储到磁盘上,下次重新运行程序,属性name又会被初始化为"zhangsan"。这时候就会使用到序列化与反序列化,将序列化后的内容写入磁盘,这里会讲到pickle模块与json模块去实现序列化与反序列化
系统 2019-09-27 17:45:52 2042