python第五课

翻译三层装饰器

 def Before(request,kargs):

print ‘before‘

def After(request,kargs):

print ‘after‘

 def Filter(before_func,after_func):

def outer(main_func):

def wrapper(request,kargs):

before_result = before_func(request,kargs)

if(before_result != None):

return before_result;

           main_result = main_func(request,kargs)

if(main_result != None):

return main_result;

after_result = after_func(request,kargs)

if(after_result != None):

return after_result;

return wrapper

return outer

@Filter(Before, After)

def Index(request,kargs):

print ‘index‘

1.   def Before(request,kargs)

2.   def After(request,kargs)

3.   def Filter(before_func,after_func)

4.   @Filter(Before, After)

a.  fileter(befor,after) return outer

b.  @outer(main_func) return wrapper

c.  index(request,kargs) -à wrapper(request,kargs)

递归

函数自已调用自己

def fun(i):

i = i+1

fun(i)

fun(0)

如果需要返回值,那么,需要 return fun(i)如果不加return,那么返回值为none

def fun(i):

i +=1

if i < 100:return fun(i)

else: return i

n = fun(0)

print n

模块

实现某种功能的所有代码的集合

内置模块 开源模块  自定义模块

导入 import module

from module.xx import xx

from module.xx import xx as newname

from module.xx import *

导入一个包,解释器解释该包下的__init__.py文件  (文件夹)

查找模块的路径 sys.path,返回值为列表,使用sys.path.append(‘路径’)可以添加路径,但是是临时的

内置模块

    os.getcmd()   获取当前工作目录

    os.chdir(‘’)  改变当前工作目录

    os.curdir返回当前目录 (‘.’)

    os.pardir返回当前目录的父目录字符串名 (‘..’)

    os.makedirs(‘dirname1/dirname2’)  可生成多层递归目录

    os.removedirs(‘dirname1’)    若目录为空,则删除并返回上层目录,如若也为空,则删除,依此类推

    os.mkdir(‘dirname’)        生成单级空目录

    os.rmdir(‘dirname’)           删除单级空目录

    os.listdir(‘dirname’)                 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印

    os.remove()    删除一个文件

    os.rename(‘oldname’,’newname’) 重命名文件/目录

    os.stat(‘path/filename’)          获取文件目录信处

    os.sep      输出操作系统特定的路径分隔符 win ‘\\’  linux ‘/’

    os.lineseq        输出当前平台使用的行终止符 win  ‘\r\n’  linux ‘\n’

    os.pathseq      输出用于分割文件路径的字符串

    os.name   输出字符串指示当前使用平台 win à’nt’  linuxà’posix’

    os.system(‘bash command’)执行shell命令

    os.environ       获取系统环境变量

    os.path.abspath(path)         返回path规范化的绝对路径

    os.path.split(path)  将path分割成目录和文件名二元组返回

    os.path.dirname(path)  返回path的目录,其实就是os.path.split(path)的第一个元素

    os.pah.basename(path)  返回path最后的文件名,是os.path.split(path)的第二个元素os.path.exists(path) 判断path 是否存在

    os.path.istabs(path)  判断path是否为绝对路径

    os.path.isfile(path) 判断path是否为一个存在的文件

    os.path.isdir(path)  判断path是否为一个存在的目录

    os.path.join(path1[,path2..]) 将多个路径组合后返回

    os.path.getatime(path) 返回path所指向的文件或目录的最后存取时间

    os.path.getmtime(path) 返回path所指向的文件或目录的最后修改时间

    文件的 Access time,atime 是在读取文件或者执行文件时更改的;
               文件的 Modified time,mtime 是在写入文件时随文件内容的更改而更改的;
                文件的 Create time,ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的。

    ls -lc filename         列出文件的 ctime 
               ls -lu filename         列出文件的 atime 
               ls -l filename          列出文件的 mtime

    • hashlib

    import hashlib

    hash = hashlib.md5() #hash.sha1()  hash.sha256()  hash.sha384()

    hash.updat(‘admin’)

    print hash.hexdigest()

    等效

    hashlib.md5(‘admin’).hexdigest()

    对加密算法中添加自定义key再来做加密

    hash=hashlib.md5(‘abc’)

    hash.update(‘admin’)

    print hash.hexdigest()

    等郊

    hashlib.md5(‘abc’+’admin’).hexdigest()

    • configparse

    [section1]

    k1 = v1

    k2 = v2

    [section2]

    k1 = v1

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    import ConfigParser

    config = ConfigParser.ConfigParser()

    config.read(‘i.cfg‘)

    secs = config.sections()

    print secs

    options = config.options(‘section2‘)

    print options

    item_list = config.items(‘section1‘)

    print item_list

    val = config.get(‘section1‘,‘k1‘)

    print val

    #sec = config.add_section(‘han‘)

    #config.write(open(‘i.cfg‘,‘w‘))

    options = config.options(‘han‘)

    print options

    #config.remove_section(‘han‘)

    #config.write(open(‘i.cfg‘,‘w‘))

    config.set(‘han‘,‘age‘,38)

    config.set(‘han‘,‘name‘,‘hanyanling‘)

    config.set(‘han‘,‘gentle‘,‘male‘)

    config.write(open(‘i.cfg‘,‘w‘))

    config.remove_option(‘han’,’age’)

    config.write(open(‘i.cfg’,’w’))

    • random

    random.random()   返回0到1之间的一个随机数

    random.randint(a,b)  返回a和b之间的一个数,包括a和b

    random.randrange ([start], stop[, step]),从指定范围内,按指定基数递增的集合中获取一个随机数

    random.shuffle(x[,random]) 将一个列表中的元素打散

    p = ["Python","is", "powerful","simple", "and so on..."]

    random.shuffle(p)

    print p

    random.sample(sequence,k) 从指定列表中随机获取指定长度的片断,不修改原列表

    list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    slice = random.sample(list, 5)  #从list中随机获取5个元素,作为一个片断返回

    print slice  print list #原有序列并没有改变

    随机验证码

    import random

    checkcode = ‘‘

    for i in range(4):

    current = random.randrange(0,4)

    if current != i:

    temp = chr(random.randint(65,90)) #取A-Z(65-90)中随机一个字母

    else:

    temp = random.randint(0,9)  #取0-9中随机一个数字

    checkcode += str(temp)  

    print checkcode

    1.在write的时候报错,

    UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 0-1: ordin

    al not in range(128)

    import sys

    print sys.getdefaultencoding()

    # ‘ascii‘

    基本上是ascii编码方式,由此Python自然调用ascii编码解码程序去处理字符流,当字符流不属于ascii范围内,就会抛出异常(ordinal not in range(128))

    解决方法

    import sys

    reload(sys)

    sys.setdefaultencoding(‘utf-8’)

    2. raw_input 中文在win终端不能正常显示,需要解码再编码

    raw_input("请输入密码:".decode(‘utf-8‘).encode(‘gbk‘))

    时间: 2024-10-30 23:09:59

    python第五课的相关文章

    Python第五课(字典)

    字典 序列这种数据结构是通过序号来访问调用元素集合中的值.但日常生活中的有些对象,两个对象之间存在某种关联关系.比如说电话号码属于某个人,电话号码和人之间就有属于的关系,想根据人的姓名来查找出电话号码,使用序列就不是特别的方便.这种情况下如果能够使用人的名字来进行查询就方便的多了,字典就是一种通过名字来访问调用值的数据结构.字典是python的一种映射类型.字典中的值没有特殊的顺序. 创建和使用字典 字典由键值对组成,使用大括号括起来.键值对使用"键:值"的格式作为一个整体被包含在大括

    python第五课(python的安装)

    下载:python官网 python.org python软件分为python2和python3 注意:python2和python3可以被看做两个不同的软件,3是2的改造版(不是普通的升级版). 安装:最好安装在D或者C盘. 代码工作原理:写出代码→交给Python软件→识别规则→Python解码器进行解码 原文地址:https://www.cnblogs.com/zsjlh/p/12234249.html

    第五课 进程管理

    unix_c_05.txt================第五课 进程管理================一.基本概念------------1. 进程与程序~~~~~~~~~~~~~1) 进程就是运行中的程序.一个运行着的程序,可能有多个进程.进程在操作系统中执行特定的任务.2) 程序是存储在磁盘上,包含可执行机器指令和数据的静态实体.进程或者任务是处于活动状态的计算机程序.2. 进程的分类~~~~~~~~~~~~~1) 进程一般分为交互进程.批处理进程和守护进程三类.2) 守护进程总是活跃的

    BeagleBone Black板第五课:Shell脚本编程实验

    BBB板第五课:Shell脚本编程实验 在一上课我们通过简单的echo命令测试并控制GPIO端口的高低电平输出,实现对一个LED指示灯的点亮和关闭控制,本节将通过Shell脚本编程,来完成两个LED指示灯的交替闪亮的实验. 实验器材:准备两个二极管指示灯,面包板等 使用GPIO端口P8.12和P8.11两个引脚 我们暂时不借助其他工具软件,直接远程登陆到BBB板的图形桌面,使用内置的Ledfpad编辑器来完成Shell脚本的编程. 远程登陆BBB板图形桌面还记得吧,不记得话参考前面的课程,这里就

    【Linux探索之旅】第一部分第五课:Unity桌面,人生若只如初见

    内容简介 1.第一部分第五课:Unity桌面,人生若只如初见 2.第一部分第六课预告:Linux如何安装在虚拟机中 Unity桌面,人生若只如初见 不容易啊,经过了前几课的学习,我们认识了Linux是什么,以及如何安装Linux系统(我们以Ubuntu这个Linux发行版为以后的演示系统),我们也在上一课终于把Ubuntu安装好了. "很不错,掌声给自己". 安装Ubuntu遇到什么问题,可以在我们的QQ群和微信群提问,也可以私信小编,QQ.微信.邮件都行.联系方式在下面. Linux

    斯坦福IOS开发第五课(第一部分)

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/27706991 作者:小马 由于第五课的内容比较多,分两部分来写. 一 屏幕旋转基本操作 控制当前的view是否支持旋转,如果是,是支持哪些方向的,有四个方向,分别是home键在下,上,左右. 在当前的viewcontroller里,实现shouldAutorotateToInterfaceOrientation方法,告诉系统你支持的旋转方向,如下: - (BOOL)shouldA

    第二十五课:超越抽象极限

    1.一个阶跃输入,后面接戴维南电阻,测量点Vout,之后接其他设计电路,末端开路 理论上在同一时刻Vout也发生阶跃(例如 0到5V) 实际上,在t=0是,输出上升到一半,持续一段时间才会继续上升到5V 这是因为当导线非常长时,需要考虑信号传输时间 脉冲到达末端返回到Vo,Vo得到一个回波,两个2.5V相加就达到5V 这个阻抗对于多数导线都等于50欧姆,称之为特性阻抗 解决方法:换短的导线: 改变时钟信号 2.同一个电压对多个反相器供电 前一个反相器在上端导通时,通过的电流变化会在电感上产生压降

    NeHe OpenGL教程 第三十五课:播放AVI

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第三十五课:播放AVI 在OpenGL中播放AVI: 在OpenGL中如何播放AVI呢?利用Windows的API把每一帧作为纹理绑定到OpenGL中,虽然很慢,但它的效果不错.你可以试试. 首先我得说我非常喜欢这一章节.Jonat

    NeHe OpenGL教程 第二十五课:变形

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第二十五课:变形 变形和从文件中加载3D物体: 在这一课中,你将学会如何从文件加载3D模型,并且平滑的从一个模型变换为另一个模型. 欢迎来到这激动人心的一课,在这一课里,我们将介绍模型的变形.需要注意的是各个模型必须要有相同的顶点,