python基础(2)

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

 

你可能感兴趣的:(Python)