Python使用对象来存储数据,构造任何类型的值都是一个对象。

#请先安装Ply  




# -*- coding: utf-8 -*-  
#--------------------------------------------------------------------------  
#Author:Jmdebugger  
#email: [email protected]  
#date: 2013-9-17  
#--------------------------------------------------------------------------  
import ply.lex as lex  

tokens = [  
    "TOKEN_IDENT",  
    "TOKEN_INT",  
    "TOKEN_FLOAT",  
    "TOKEN_STRING",  
    "TOKEN_OP",  
    "TOKEN_DELIM_COMMA",        #,  
    "TOKEN_DELIM_OPEN_PAREN",   #(  
    "TOKEN_DELIM_CLOSE_PAREN",  #)  
    "TOKEN_DELIM_OPEN_BRACKET", #[  
    "TOKEN_DELIM_CLOSE_BRACKET",#]  
    "TOKEN_DELIM_OPEN_BRACE",   #{  
    "TOKEN_DELIM_CLOSE_BRACE",  #}  
    "TOKEN_DELIM_SEMICOLON"    #;  

    ]  

reserved = {  
   'if'     :   'TOKEN_RSRVD_IF',  
   'else'   :   'TOKEN_RSRVD_ELSE',  
   'true'   :   'TOKEN_RSRVD_TRUE',  
   'false'  :   'TOKEN_RSRVD_FALSE',  
   'while'  :   'TOKEN_RSRVD_WHILE',  
   'break'  :   'TOKEN_RSRVD_BREAK',  
   'continue':  'TOKEN_RSRVD_CONTINUE',  
   'goto'   :   'TOKEN_RSRVD_GOTO',  
   'func'   :   'TOKEN_RSRVD_FUNC',  
   'var'    :   'TOKEN_RSRVD_VAR',  
   'for'    :   'TOKEN_RSRVD_FOR',  
   'return' :   'TOKEN_RSRVD_RETURN'  
}  

tokens += reserved .values()  


t_ignore = r' \t\r'  
def t_COMMENT(t):  
    r'(/\*(.|\n)*?\*/)|(\/\/.*)'  
    pass  

def t_newline(t):  
    r'\n+'  
    t.lexer.lineno += len(t.value)  

def t_error(t):  
    print "LaunchScript error: "+repr(t.value)  

def t_TOKEN_IDENT(t):  
    r'[a-zA-Z_][a-zA-Z_0-9]*' #标识符  
    t.type = reserved.get(t.value , 'TOKEN_IDENT')  
    return t  

def t_TOKEN_INT(t):  
    r'(0x[a-fA-F0-9]+)|([0-9]+)'  
    return t  

t_TOKEN_FLOAT =  r'[0-9]*\.[0-9]+'  
t_TOKEN_STRING = r'(\"([^\\\r]|(\\.))*?\")' #|(\"([^\\\n]|(\\.))*?\")' only for windows  
t_TOKEN_DELIM_COMMA = r'\,'  
t_TOKEN_DELIM_OPEN_PAREN = r'\('  
t_TOKEN_DELIM_CLOSE_PAREN = r'\)'  
t_TOKEN_DELIM_OPEN_BRACKET = r'\['  
t_TOKEN_DELIM_CLOSE_BRACKET = r'\]'  
t_TOKEN_DELIM_OPEN_BRACE = r'\{'  
t_TOKEN_DELIM_CLOSE_BRACE = r'\}'  
t_TOKEN_DELIM_SEMICOLON = r'\;'  

def t_TOKEN_OP(t):  
    r'(\<\<\=)|(\>\>\=)|([\+\-\*\/\%\&\|\^\=\!\>\<]\=)|(\|\|)|(\&\&)|(\+\+)|(\-\-)|[\+\-\*\/\%\^\=\&\|\>\<\!\~]'  
    return t  




if __name__ == "__main__":  
    lexer = lex.lex()  
    f = open("./test.txt" , 'rb')  
    data = f.read()  
    f.close()  
    lexer.input(data)  

    while True:  
        tok = lexer.token()  
        if not tok: break      # No more input  
        print tok.value+"\t---->\t"+tok.type  

任何一个对象都有三个特性:身份,类型和值。

 

Python中实现MD5加密是通过hashlib完成的。在演示之前,我们先创建一段文本作为加密数据。如下所示:
hashlib_data.py

身份是对象的唯一标识,可以通过内建函数id()得到,这个值相当于该对象的内存地址(实际上并不是)。

# -*- coding: utf-8 -*-
#————————————————————————–
#Author:Jmdebugger #email:
[email protected]
#date: 2013-9-17…

#–encoding=’utf-8′–

Python的类型如下:

import hashlib

标准类型:

lorem=””” Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Donecegestas, enim et consectetuer ullamcorper, lectus ligula rutrum
leo,a elementum elit tortor eu quam. Duis tincidunt nisi ut ante.
Nullafacilisi. Sed tristique eros eu libero. Pellentesque velarcu.
Vivamus purus orci, iaculis ac, suscipit sit amet, pulvinar eu,lacus.
Praesent placerat tortor sed nisl. Nunc blandit diam egestasdui.
Pellentesque habitant morbi tristique senectus et netus etmalesuada
fames ac turpis egestas. Aliquam viverra fringillaleo. Nulla feugiat
augue eleifend nulla. Vivamus mauris. Vivamus sedmauris in nibh placerat
egestas. Suspendisse potenti. Maurismassa. Ut eget velit auctor tortor
blandit sollicitudin. Suspendisseimperdiet justo. “””

整型                    int

使用MD5进行加密非常简单只要调用hashlib中的md5加密算法即可:

布尔型                bool

#澳门微尼斯人手机版,–encoding=’utf-8′–

长整型                long

import hashlib from hashlib_data

浮点型                float

import lorem

复数型                complex

h=hashlib.md5()

发表评论

电子邮件地址不会被公开。 必填项已用*标注