1. import os
  2.  
  3. #文件读写 不用自动关闭
    with open('test.txt','r') as f:
    #一次性读取所有
    data = f.read()
    #print(data)
    print('---------循环打印------------')
    with open('test.txt','r') as f:
    for line in f:
    if line=='':
    print('遇到\n换行符')
    else:
    #为什么输出是换行?
    print(line)
    with open('test.txt','w') as f:
    f.write('你好\n')
    f.write('热烈欢迎\n')
    #line1='我爱北京'
    #line2='天安门'
    #with open('test.txt','w') as f:
    # print(line1,file f)
    # print(line2,file f)
    #nt表示是window
    print(os.name)
    #环境变量
    print(os.environ)
    #操作文件与目录
    print(os.path.abspath('.'))
    #在某个目录下面创建一个新的目录
    print(os.path.join('batman\python\demo','pictures'))
    #os.rmdir('E:\\batman\\python\\demo\\pictures')
    #os.mkdir('E:\\batman\\python\\demo\\pictures')
    #os.rename('学习目标.txt','learntarget.txt')
    #os.remove('learntarget.txt')
  4.  
  5. #复制文件os没有提供 可以使用shutil
    #import shutil 学习!!!
    #shutil.copyfile('E:\\batman\\python\\demo\\learntarget.txt','E:\\batman\\python\\demo')
  6.  
  7. print('-------------序列化和反序列化------------------')
    import pickle
  8.  
  9. d=dict(name='王晓春',age=30,adress='安徽')
    #调用dumps函数进行序列化
    str=pickle.dumps(d)
    print(str)
    f=open('dump.txt','wb')
    #将序列化的内容写入到f文件中
    pickle.dump(d,f)
    f.close()
    #使用json序列化
    import json
  10.  
  11. d=dict(name='小四',age=28,adress='潮州')
    str=json.dumps(d)
    print(str)
    #调用loads反序列化
    d=json.loads(str)
    print(d)
    #求绝对值得函数 abs
    print(abs(-100))
    print(type(abs))
    #abs 具有复制的能力
    f=abs
    print(f(-99))
    def add(x,y,f):
    return f(x)+f(y)
    print(add(-4,4,abs))
    print('----------匿名函数------------')
    sum=lambda arg1,arg2:arg1+arg2
    print(sum(1,2))
    #reduce内建函数是一个二元操作函数,用来将一个数据集合(列表、元组)中的所有数据进行如下操作:传给reduce中的函数
    #func()必须是一个二元操作函数先对集合中的第1,2个数据进行操作,得到的结果在与第三个数据用func()函数进行运算
    from functools import reduce
  12.  
  13. l=[1,2,3,4,5,6,7,8]
    print(reduce(lambda x,y:x+y,l))
    #给一个初始值,放在list后面
    print(reduce(lambda x,y:x+y,l,10))
    #map函数
    new_list=list(map(lambda i:i+1,l))
    print(new_list)
    l2=[2,3,4]
    new_list=list(map(lambda x,y:x+y,l,l2))
    print(new_list)
    #filter()函数可以对序列做过滤处理,把序列的每一项传到自定义的过滤函数里面处理
    f1=[33,44,55,666]
    new_list=list(filter(lambda x:x<100,f1))
    print(new_list)
  14.  
  15. print('----------装饰器------------')
    def hello(fn):
    def wrapper():
    print('hello, %s' %fn.__name__)
    #回调函数
    fn()
    print('goodbye, %s' %fn.__name__)
    return wrapper()
  16.  
  17. #hello注解 hello函数中返回了一个inner函数wrapper,这个wrapper函数回调了传过来的fn
    #并在回调前后加了两条语句
    #可以理解为把一个函数传到另外一个函数中,在回调自己
    @hello
    def foo():
    print('i am foo')
    foo()
    #斐波那契数列递归算法
    from functools import wraps
    def memo(fn):
    cache={}
    miss=object()
  18.  
  19. @wraps(fn)
    def wrapper(*args):
    result=cache.get(args,miss)
    if result is miss:
    result=fn(*args)
    cache[args]=result
    return result
    return wrapper
  20.  
  21. @memo
    def fib(n):
    if n<2:
    return n
    return fib(n-1)+fib(n-2)
  1. print('---------动态添加属性和方法-----------')
    #动态给对象添加属性和方法
    from types import MethodType
  2.  
  3. #__slots__限制添加属性和方法
    class MyClass(object):
    __slots__ = ['name','set_name']
  4.  
  5. def set_name(self,name):
    self.name=name
  6.  
  7. mycls=MyClass()
    mycls.name='jack'
    mycls.set_name=MethodType(set_name,mycls)
    mycls.set_name('tom')
    print(mycls.name)
    #限制对继承类不起作用
    class YoursClass(MyClass):
    pass
  8.  
  9. youcls=YoursClass()
    youcls.age=30
    print(youcls.age)
  10.  
  11. import traceback
  12.  
  13. class Student:
    @property
    def score(self):
    return self._score
  14.  
  15. @score.setter
    def score(self,value):
    if not isinstance(value,int):
    raise ValueError('not int')
    elif value<0 or value>100:
    raise ValueError('not between')
    self._score=value
  16.  
  17. #只读属性
    @property
    def double_score(self):
    return self._score * 2
  18.  
  19. s=Student()
    s.score=75
    print(s.score)
    print(s.double_score)
    try:
    s.double_score=150
    except AttributeError:
    traceback.print_exc()
  20.  
  21. #自己实现描述器 __set__/__get__/__del__
    class MyProperty:
    def __init__(self, fget=None, fset=None, fdel=None):
    print(fget)
    self.fget=fget
    self.fset=fset
    self.fdel=fdel
  22.  
  23. def __get__(self,instance,cls):
    if self.fget:
    self.fget(instance)
  24.  
  25. def __set__(self, instance, value):
    if self.fset:
    self.fset(instance,value)
  26.  
  27. def __del__(self, instance):
    if self.fdel:
    self.fdel(instance)
  28.  
  29. def getter(self,fn):
    self.fget=fn
  30.  
  31. def setter(self,fn):
    self.fset=fn
  32.  
  33. def deler(self,fn):
    self.fdel=fn
  34.  
  35. class Student2:
    @MyProperty
    def score(self):
    return self._score
  36.  
  37. @score.setter
    def set_score(self,value):
    self._score=value
  38.  
  39. s=Student2()
    s.score=95
    print(s.score)

python基础学习第六天的更多相关文章

  1. Day1 Python基础学习

    一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...

  2. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  3. Day1 Python基础学习——概述、基本数据类型、流程控制

    一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...

  4. Python 基础学习 总结篇

    Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...

  5. (一)python基础学习

    根据廖雪峰老师的python教程写一些学习总结! Python基础学习 1.使用list和tuple (1)list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时 ...

  6. python基础学习(起步)

    目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...

  7. Python基础学习二

    Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...

  8. Python基础学习一

    Python基础学习一 1.变量与常量 变量名:大小写英文.数字.下划线的组合,数字不能开头 常量名:习惯上常量用大写字母命名,例如"PI" 2.多行输出 转义符:反斜杠(),如果 ...

  9. Python基础学习五

    Python基础学习五 迭代 for x in 变量: 其中变量可以是字符串.列表.字典.集合. 当迭代字典时,通过字典的内置函数value()可以迭代出值:通过字典的内置函数items()可以迭代出 ...

随机推荐

  1. HDU4287

    Intelligent IME Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  2. HTML命名规范

    一.关于选择器的命名   W3C CSS2.1的 4.1.3 节中提到:标识符(包括选择器中的元素名,类和ID)只能包含字符[a- zA-Z0-9]和ISO 10646字符编码U+00A1及以上,再加 ...

  3. python中传值和传地址问题

    在python中,还没有对这个知识点有一个详细的定义,很模糊的说明了,通过下面代码,可以观察出来,什么时候传的是值,什么时候传的是地址 有时候会发现自己的数据发生变化,可能就是这个原因,python的 ...

  4. python之约束, 异常处理, md5

    1. 类的约束 1. 写一个父类. 父类中的某个方法要抛出一个异常 NotImplementedError (重点) 2. 抽象类和抽象方法 # 语法 # from abc import ABCMet ...

  5. JS性能优化 之 事件委托

    面试中2次被问到过这个知识点,实际开发中,应用事件委托也比较常见.JS中事件委托的实现主要依赖于 事件冒泡 .那什么是事件冒泡?就是事件从最深的节点开始,然后逐步向上传播事件,举个例子:页面上有这么一 ...

  6. JMeter 参数化之利用JDBCConnectionConfiguration从数据库读取数据并关联变量

    参数化之利用DBC Connection Configuration从数据库读取数据并关联变量   by:授客 QQ:1033553122 1.   下载mysql jar包 下载mysql jar包 ...

  7. (网页)angular js 终极购物车(转)

    转自CSDN: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  8. [20180626]函数与标量子查询14.txt

    [20180626]函数与标量子查询14.txt --//前面看http://www.cnblogs.com/kerrycode/p/9099507.html链接,里面提到: 通俗来将,当使用标量子查 ...

  9. python第三十六天-----类中的特殊成员方法

    __doc__ 查看尖的描述信息 __module__表示当前操作的对象所在的模块 __class__表示当前操作的对象所属的类 __init__构造方法 通过类创建对象自动执行 __del__析构方 ...

  10. 【PAT】B1066 图像过滤(15 分)

    注意输出是占三位,其他的挺水 #include<stdio.h> #include<algorithm> using namespace std; int main(){ in ...