今天又学习了
只作为知识点记录用,务必简洁,倒序,与大知识有关的记录在大知识下
*)database cursor
database cursor is a control structure thar enables traversal over the records in a database
*)anaconda(森蚺)是一个开源的python发行版本,包含了大量科学库
*)python中内置的逆序遍历列表的方法:
参考链接:https://www.cnblogs.com/huahuayu/p/8338388.html
for i in reversed(list):
另一种方法理解起来绕一点,从列表最后一位下标的元素往前循环,步长为-1,直到数组下标为0的元素。从效率上来说比前一种更好,因为不需要更多的内存开销来存放reversed(list)副本。
*)deepcopy()和copy()深复制和浅复制的区别
参考链接:https://blog.csdn.net/qq_32907349/article/details/52190796
deepcopy()能复制对象内的子对象。例如list中的子列表
copy()只能复制要复制对象的本身,内部对象也会复制,但子对象中的内容要是有变化,则另一个对象也会变化
>>> a=[[1,1],[2,2]] >>> b=copy.copy(a) >>> c=copy.deepcopy(a) >>> a,b,c ([[1, 1], [2, 2]], [[1, 1], [2, 2]], [[1, 1], [2, 2]]) >>> a[0][1]=3 >>> a [[1, 3], [2, 2]] >>> b [[1, 3], [2, 2]] >>> c [[1, 1], [2, 2]] >>>
53)random.shuffle() #shuffle:改组
shuffle() 方法将序列的所有元素随机排序。
52)伪随机数生成 uuid模块
参考链接:https://www.cnblogs.com/franknihao/p/7307224.html
51)找到一个关键词:平铺,就是那些只有花纹的图片
50)关键字参数:https://www.cnblogs.com/frankyou/p/5718888.html
关键字参数允许你传入任意个(包含0个)含参数名的参数,这些参数在函数内部自动组装为dict
可以用在处理不确定(即可变)个数的参数的函数上
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # 关键字参数:**kw 4 def person(name,age,**kw): 5 print('name:',name,'age:',age,'other:',kw) 6 person('Frank','37') 7 person('Frank','37',city='Shanghai')#参数名时city 8 person('Frank','37',gender='M',job='Engineer')参数名是gender和job #输出 name: Frank age: 37 other: {} name: Frank age: 37 other: {'city': 'Shanghai'} name: Frank age: 37 other: {'gender': 'M', 'job': 'Engineer'}
用 kw.get('gender') 可以获取值M,如果没有返回值为None
49)map和set https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014345007434430758e3ac6e1b44b1865178e7aff9082e000
map类似于python的dict,和JavaScript的{}数据类型(也对应于python的dict)相似,不过map允许键可以死字符串及字符串以外的其他数据类型
set和map类似,也是一组key的集合,但不储存value,且不能有重复的key
48)xrange() http://www.runoob.com/python/python-func-xrange.html
是一个生成器,不返回一个数组
47)拜耳滤色镜、灰度图形、满井电荷、量子效率、增益、数位讯号、光的位置讯号以及箩卜坑岗位
46)在看到[]时,里面为可选参数
45)str.strip([char]) 用于移除str头尾指定的字符char,未指定时为空格或换行符
http://www.runoob.com/python/att-string-strip.html
44)Gitbook https://www.gitbook.com/
43)cmd 中的cd命令 改变当前目录到:
PS C:\Users\Administrator.SC-201605202132> cd c:/ PS C:\>
PS意为在powerShell下运行
第一行会改变工作目录到c盘
42)css hideFoucus 使对象失去聚焦 https://www.cnblogs.com/asqq/archive/2012/10/12/3194964.html
41)要找到一个<button>元素,他的value属性被设置为favorite,css选择器的字符串是
button[value="favorite"]
40)通过WinRAR查看某些文件:右击“查看文件”
39) pip show selenium 命令显示 selenium 模块的信息
38) pip list 命令可以查看安装的模块列表和版本
37)使用 try...except 语句的方式
import requests res=requests.get('http://inventwithpython.com/page_that_does_not_exist') try: res.raise_for_status() except Exception as exc: print('这里出现了一个错误:'+str(exc)
36)使用 random.randin(a,b) 返回一个a到b的随机整数
35)比较数据类型 >>>详情点击<<<
isinstance(变量名,类型) ,或通过 type() 与已知类型比较
>>> x=2 >>> isinstance(x,int) True
#或者使用这种方法 好聪明哦
>>> type(s)==type(x)
34)以常见格式输出当前时间 time.sleep()
33)让程序休眠 time.sleep()
#!/usr/bin/python import time print "Start : %s" % time.ctime() time.sleep( 5 ) print "End : %s" % time.ctime()
32)格式化输出字符串与格式化操作符之 %f >>>详细信息<<<
用于格式化浮点字符串
>>> pi = 3.141592653 >>> print('%10.3f' % pi) #字段宽10,精度为3 3.142 #注意前面有空格
31) repr(obj) 函数 >>>详细信息<<<
与 %s %r 类似
与 str() 函数类似,都是对‘对象’使用的方法,将其的字符格式做些处理,将对象转化为供解释器读取的形式,返回string格式
>>>stringName='example string' >>>repr(stringName) " 'example string' "
30)注意不要让不应该匹配的引号匹配:
work_time=timeit('findBigFile("F:\DCIM",1000000)', #这里注意 'from __main__ import findBigFile',number=1)
29)列表推导式语法糖
#为列表赋值为0到100 listname=[x for x in range(100)]
28)关键字参数 不理解
似乎是通过键值对的形式传入参数,难道只是为了让我们看起来更容易理解?
27)面向切面编程 不理解
函数进入和退出时,成为一个横切面,这种编程方式称为面向切面编程。我是在了解装饰器是知道的,给我的感觉是这种编程方式通过关注每个函数从而关注于代码的流程?
26)并且有很多简便的方式都称为语法糖
25)语法糖@
用在函数开始定义的地方,能省去最后一步的赋值操作
def fun_decorator(func):#装饰器 ---snip--- @fun_decorator #这样就能省去fun_require_decoration=fun_decorator(fun_require_decoration) def fun_require_decoration:需要装饰的函数 --snip--
24)__name__意义和用法 >>>详细信息<<<
加下划线代表是系统变量,还有就是通过__name__==__main__来判断当前模块是否是主模块,进而决定是否执行主函数
23) %s 和 %r 的区别: >>>详细信息<<<
后者能更好的输出对象的类型?
22) print(min(list)) 返回列表中数值最小的元素
21)修饰器(可单独) >>>详细信息<<< >>>我的学习记录<<<
利用python独有的可将函数作为变量传递的特性,从而达到在不改变函数内部代码的情况下,对代码的功能却能改变的一种方法(其他语言的是怎样的原理?)
19)python计时器 timeit 与 repeat
简单的使用方式 ,使用参数的函数有问题 未解决
#timeit使用方式 from timeit import timeit timeit('x=1',number=500) #测试x=1执行500次的时间,number默认值为1000000 def func(arg1): ---snip---
#注意,函数名要加引号 系统变量总共有4个下划线符号
#arg1应该是值,不能是变量名 timeit('func(arg1)','from __main__ import func' ,number=100) #测试函数的运行时间 #repeat使用方式 from timeit import repeat repeat(func(arg1),'from _main_ import func',number=100,repeat=5) #重复测5轮,每轮运行100次
由于电脑总是会有其他程序在运行,所以一般重复运行多轮,取最小值
复杂一点的 牵涉到使用修饰器,可以应用在需要参数的函数 >>>详细信息<<<
18)简单的默认方式
def humanReadable_size(size,is_1024_byte=True):
---snip---
17)字典数据类型的新定义方式
SUFFIXES = {1000:['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], #注意1000不用加引号 1024:['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']}
16)直接用 return value 来跳出for循环 精简语法
for suffix in SUFFIXES[mutiple]: size/=mutiple #直到Size小于能往下一个单位变的数值 if size<mutiple: return '{0:.1f}{1}'.format(size,suffix)#亮点这里
15)这样写判断赋值的语法:精简语法
is_1024_byte=True --snip-- mutiple=1000 if is_1024_byte else 1024 #默认是1000
14)这种变量命名方法:
is_1024_byte=True #简单直观
13)用 raise 语句抛出异常 >>>详情点击<<<
raise唯一的一个参数指定了她要抛出的异常,这个参数必须是一个异常的实例或者异常类
>>>raise NameError('HiThere') Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: HiThere
12) format 格式化函数 >>>详情点击<<<
用{}和:来代替%
>>> "{1} {0} {1}".format("hello", "world") # 设置指定位置 'world hello world'
>>> "{1:.1f} {0}".format("3.15555", "world") #':'表示对这个{}里的数设置格式‘.1f’表示保留一位小数? '3.1 hello'
11) 文件的扩展名
os.path.splitext(path) #注意,返回的是一个文件名与扩展名的元组,而不是一个字符串
10)文件重命名
os.rename(beforeFilename,afterFilename) #都应该是绝对路径
9)对正则表达式进行分组的时候
newRegex=re.compile(r(\d\d)(\s)) mo=newRegex.search(test_string) #mo.group(1)是"\d\d"匹配的内容 newRegex=re.compile(r((\d\d)(\s))) mo=newRegex.search(test_string) #mo.group(1)是"(\d\d)(\s)"匹配的内容
即:
newRegex=re.compile(r'(1) (2 (3)) (4 (5)) )')
8)正则表达式尽量少用【】待证
7)我在写一个匹配任意字符结束的正则语句
.*.$ 不如 (.*?)$
6)管道匹配时句法
testRegex=re.compile(r'(19|20)\d\d') #一般把需要使用管道逻辑的所有规则都用括号括起来 ,否则会把一个管道字符到下一个管道字符间的所有文本作为给管道去选择的
5)在编辑地址字符串是最好使用原始字符串 r'example string' 防止出错
4)round(para1,para2)方法 >>>介绍<<<
返回para1的四舍五入值,保留para2位小数
3)使用 open(path) 时,假如path不存在不会创建path,加参数如 open(path,‘w’) 会创建,与是否是当前目录无关系,且 shelve.open(data) 也会新建
2) with stmt as a 语句 >>>详细介绍<<< >>>详细介绍二<<<
我觉得和for in语句很像,但是他说和异常处理有关?
将 stmt 执行结果返回给 a
1) lambda表达式 >>>详细介绍<<<
又称为匿名函数,对我而言,当不至于为一个函数写名称时,我会用它