python 易学,语法简单,但是想要精通还是比较困难的,语法太灵活了…

1.python装饰器

#!/usr/bin/env python
"""
python decorator
比较好奇flask hello world app.route('/') 自己实现一个
装饰器就是接收一个函数对象返回一个函数对象
带参数的装饰器其实就是一个普通函数接收参数 返回一个装饰器
"""

from functools import wraps


end = []
url=[]

def decorator(f):
    end.append(f)
    def wrapper():
        return f()
    return wrapper
#定义最简单装饰器decorator 接收一个函数对象 返回一个函数对象


def app(path):
    url.append(path)
    return decorator
#一个普通函数接收一个参数 返回一个装饰器

@decorator
def home():
    print("i am home")

# 等价 home = decorator(home)

print(home.__name__) #home 变wrapper了
#如果想让home 函数名不变 在定义装饰器的时候用@wraps(f)修饰wrapper

@app("/")
def home2():
    print("i am home2")

#等价 home2 = app('/')(home) #把app('/') 想象成一个普通函数立即执行返回装饰器函数对象decorator
print(home2.__name__) #home2 变wrapper了



print(dict(zip(url,end)))
#{'/': <function home at 0x7fb676eac9d8>}

2 python类

基类object的方法

__init____del__

__init__对象创建时调用 相当于java的构造函数 __del__对象销毁时调用 相当于析构函数 一个例子

import time
class Student(object):
    def __init__(self,name):
        self.name = name
        print(name)

    def __del__(self):
        print("__del__",self.name)

a = Student("yang")

time.sleep(1)

#yang
#__del__ yang

__str____repr__ __format__

__str__对象被str()函数调用时执行 __repr__对象被repr()函数调用时执行 __format__ 对象被 string.format()函数调用时执行 直接看例子

class Student(object):
    def __str__(self):
        return "student"

    def __repr__(self):
        return "repr - student"
    def __format__(self,x):
        return "format- student"
a = Student()

print(a)
print(str(a))
print(repr(a))
print(format(a))
print("%s" % a)
print("%r" % a)
print("{0}".format(a)) #调用__format__格式化 {}里可以使用点取属性{0.__class__}
print("{0!r}".format(a)) #调用__repr__格式化
print("{0!s}".format(a)) #调用__str__格式化
print(Student == a.__class__)

#out

student
student
repr - student
format- student
student
repr - student
format- student
repr - student
student
True

__enter____exit__直接看例子

class Student(object):
    def __enter__(self):
        print("enter")
        return "f"
    def __exit__(self, exc_type, exc_val, exc_tb):
        print("exit")
        return self

a = Student()

with a as f:
    print(f)
    print("entered")
print("exited")

enter
f
entered
exit
exited

还有很多的

让类可以作用于for in 实现iter 切片 索引

3 python元类

4 python extend继承 mixin混入

5 python进制

0x开头表示16进制,0b开头表示2进制,0o开头表示8进制 表示的数字

In [1]: 0x41
Out[1]: 65

In [19]: hex(65)
Out[19]: '0x41'

In [9]: 0b1000001
Out[9]: 65

In [13]: oct(8)
Out[13]: '0o10'

In [14]: 0o10
Out[14]: 8

In [2]: "\x41"
Out[2]: 'A'

In [6]: ord('A')
Out[6]: 65

ascii码到字符
In [24]: chr(65)
Out[24]: 'A'

In [25]: chr(0x41)
Out[25]: 'A'


In [26]: ord('A')
Out[26]: 65

In [38]: ord('严')
Out[38]: 20005

In [39]: hex(20005)
Out[39]: '0x4e25'

In [40]: bin(20005)
Out[40]: '0b100111000100101'

In [41]: "\u4e25"
Out[41]: '严'

In [42]: ord('杨')
Out[42]: 26472

In [43]: ord('洋')
Out[43]: 27915

In [44]: hex(26472)
Out[44]: '0x6768'

In [45]: hex(27915)
Out[45]: '0x6d0b'

In [46]: "\u6768\u6d0b"
Out[46]: '杨洋'

学习资料