1:dir()函数
dir()函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数方法__dir__(),该方法将被调用,如果参数不包括__dir__(),该该方法将最大限度的收集信息。
2:python链接mysql数据库
由于MySQL服务器以独立的进程运行,并通过网络对外服务,所以需要支持python的MySQL驱动来连接到MySQL服务器。
目前,有两个MySQL驱动:
一:mysql-connector-python:是mysql官方的纯Python驱动;
二:MySQL-python:是封装了MySQL C驱动的python驱动;
3:pyton中的面向对象、多态、封装、方法和继承
多态:意味着可以对不同类的对象使用同样的操作
封装:对外部世界隐藏对象的工作细节
继承:以普通的类为基础建立专门的类对象
多态:多态意味着就算不知道变量所引用的对象类型是什么,还是能对它进行操作,而它也会根据对象类型的不同而表现出不同的不同的行为。
4:pyton解释器
迄今为止,python有一个名为解释器的软件包,解释器是一种让其它程序运行起来的程序,当你编写一段python程序,python程序,python解释器将读取程序,并按照其中的命令执行,解释器是代码与机器的计算机硬件之间的软件逻辑层。
python首先编译成“字节码”,之后再将其转发到“虚拟机”中。
字节码编译:python内部先将源代码编译成多为的字节码形式,字节码是源代码底层的、与平台无关的表现形式。这些语句翻译成一组字节码指令,这些字节码可以提高执行速度。
如果python无法在机器上写入字节码,程序仍然可以工作:字节码将会在内存中生成并在程序结束时简单的丢弃。
python虚拟机(PVM)
PVM是一个独立的程序,不需要安装,事实上,PVM就是迭代运行字节码指令的一个大循环,一个接一个地完成操作,PVM是python的运行引擎,它时常表现为Python系统的一部分,并且它是实际运行脚本的组件。
源代码(np.py)-------字节码(m.pyc)------运行时(PVM)
python的运行模式,录入的源代码转换为字节码,之后字节码在Python虚拟机中运行,代码自动被编译,之后再解释。
Python工作中通常没有“build”或者“make”的步骤,代码在写好后立即运行,另外一个,python字节码不是机器的二进制代码。
5:python中的defaultdict
defaultdict解决了使用dict时的一个问题:
如果使用dict[key]取得字典中的key对应的value时,key不存在,回报错KeyError
defaultdict在dict的基础上添加了一个missing(key)方法,在调用一个不存在的key时,defaultdict会调用__missing__,返回一个根据default_factory参数的默认值,所以不会返回KeyError
6:python中的search方法
# -*- coding=utf-8 import re pattern = 'this' text='Does this text match the pattern?' match=re.search(pattern,text) s=match.start() e=match.end() print(s) print(e)
search方法是从text中找到pattern相同的,match.start输出第一个匹配的下标索引,match.end输出最后一个匹配的下标。
输出:
5
9
7:python中findall()方法的使用
# -*- coding=utf-8 import re text='abbaaabbbbaaaa' pattern='ab' for match in re.findall(pattern,text): print('Found"%s"'%match)
输出:
Found"ab"
Found"ab"
match返回的是pattern中与text匹配的是哪个。
import re formula='I+i=ME' s=re.findall('[A-Z]',formula) print(s)
输出:['I', 'M', 'E']
8:列表中元素去重
s=set(['I','I','M','E']) print(s)
输出:set(['I', 'E', 'M'])
利用set集合去除列表中重复的元素
9:python中maketrans()方法
python中maketrans()方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
str.maketrans(intab, outtab)
intab -字符串中要替代的字符组成的字符串
outtab -相应的映射字符的字符串
#!/usr/bin/python # -*- coding=utf-8 from string import maketrans intab="aeiou" outtab="12345" trantab=maketrans(intab,outtab) str="this is string example...wowo!!!" print(str.translate(trantab))
输出:
th3s 3s str3ng 2x1mpl2...w4w4!!!
10:set.union和set().union实现两个集合的并集
s=set.union({1,2},{2,4,5}) print(s) a=set().union({1,2},{2,3,4}) print(a)
输出:
set([1, 2, 4, 5])
set([1, 2, 3, 4])
11:forzenset()返回一个冷冻的集合
frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
a=set([1,2,3]) a.add(5) print(a) b=frozenset([1,2,3]) b.add(5) print(b)
set([1, 2, 3, 5])
Traceback (most recent call last):
File "/home/yang/PycharmProjects/python_jichu/enumerate_01.py", line 15, in
b.add(5)
AttributeError: 'frozenset' object has no attribute 'add'
12:any()函数用于判断给定的可迭代参数iterable是否全部为False,如果全为False则返回False,如果有一个为True,则返回True。
13:python中zfill()方法
zifill方法返回值定长度的字符串,原字符串右对齐,前面填充0
# -*- coding=utf-8 string='hello' s=string.zfill(10) print(s)
输出:00000hello
14:apply函数格式
apply(func,*args,**kwargs)
用途:当一个函数的参数存在于一个元组或者一个字典中时,用来简介的调用这个函数。
def function(a, b): print(a, b) apply(function, ('good', 'better')) apply(function, (2, 3 + 6)) apply(function, ('cai', 'quan')) apply(function, ('cai',), {'b': 'caiquan'}) apply(function, (), {'a': 'caiquan', 'b': 'Tom'}) # --使用 apply 函数调用基类的构造函数 class Rectangle: def __init__(self, color="white", width=10, height=10): print "create a", color, self, "sized", width, "x", height class RoundedRectangle(Rectangle): def __init__(self, **kw): apply(Rectangle.__init__, (self,), kw) rect = Rectangle(color="green", height=100, width=100) rect = RoundedRectangle(color="blue", height=20)
输出结果:
('good', 'better')
(2, 9)
('cai', 'quan')
('cai', 'caiquan')
('caiquan', 'Tom')
create a green <__main__.Rectangle instance at 0x0678FA08> sized 100 x 100
create a blue <__main__.RoundedRectangle instance at 0x06620468> sized 10 x 20
15:@property特性
特征协议允许把一个特性属性的访问操作(读取、设置、删除)指向我们提供的函数或方法,使得我们能够插入在属性的访问操作的时候自动允许的代码,还可以为属性提供文档。
# -*- coding=utf-8 class Person: def __init__(self,name): self._name=name def getName(self): print("获取。。。") return self._name def setName(self,value): print("设置。。。") self._name=value def delName(self): print("删除。。。") del self._name name=property(getName,setName,delName,"name property docs") # print(name) if __name__=='__main__': bob=Person("Bob Smith") print(bob.name) bob.name="Henry" print(bob.name) del bob.name print(bob.name) print(Person.name.__doc__)
输出:
获取。。。
Bob Smith
Henry
获取。。。
Bob Smith
name property docs
# -*- coding=utf-8 class Person: def __init__(self,name): self._name=name @property def name(self): "name property docs" print("获取。。。") return self._name @name.setter def name(self,value): print("设置。。。") self._name=value @name.deleter def name(self): print("删除。。。") del self._name if __name__ =='__main__': bob=Person("Bob Smith") print(bob.name) bob.name="Herry" print(bob.name)
输出:
获取。。。
Bob Smith
Herry