python基础学习第六天
import os #文件读写 不用自动关闭
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') #复制文件os没有提供 可以使用shutil
#import shutil 学习!!!
#shutil.copyfile('E:\\batman\\python\\demo\\learntarget.txt','E:\\batman\\python\\demo') print('-------------序列化和反序列化------------------')
import pickle 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 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 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) print('----------装饰器------------')
def hello(fn):
def wrapper():
print('hello, %s' %fn.__name__)
#回调函数
fn()
print('goodbye, %s' %fn.__name__)
return wrapper() #hello注解 hello函数中返回了一个inner函数wrapper,这个wrapper函数回调了传过来的fn
#并在回调前后加了两条语句
#可以理解为把一个函数传到另外一个函数中,在回调自己
@hello
def foo():
print('i am foo')
foo()
#斐波那契数列递归算法
from functools import wraps
def memo(fn):
cache={}
miss=object() @wraps(fn)
def wrapper(*args):
result=cache.get(args,miss)
if result is miss:
result=fn(*args)
cache[args]=result
return result
return wrapper @memo
def fib(n):
if n<2:
return n
return fib(n-1)+fib(n-2)
print('---------动态添加属性和方法-----------')
#动态给对象添加属性和方法
from types import MethodType #__slots__限制添加属性和方法
class MyClass(object):
__slots__ = ['name','set_name'] def set_name(self,name):
self.name=name mycls=MyClass()
mycls.name='jack'
mycls.set_name=MethodType(set_name,mycls)
mycls.set_name('tom')
print(mycls.name)
#限制对继承类不起作用
class YoursClass(MyClass):
pass youcls=YoursClass()
youcls.age=30
print(youcls.age) import traceback class Student:
@property
def score(self):
return self._score @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 #只读属性
@property
def double_score(self):
return self._score * 2 s=Student()
s.score=75
print(s.score)
print(s.double_score)
try:
s.double_score=150
except AttributeError:
traceback.print_exc() #自己实现描述器 __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 def __get__(self,instance,cls):
if self.fget:
self.fget(instance) def __set__(self, instance, value):
if self.fset:
self.fset(instance,value) def __del__(self, instance):
if self.fdel:
self.fdel(instance) def getter(self,fn):
self.fget=fn def setter(self,fn):
self.fset=fn def deler(self,fn):
self.fdel=fn class Student2:
@MyProperty
def score(self):
return self._score @score.setter
def set_score(self,value):
self._score=value s=Student2()
s.score=95
print(s.score)
python基础学习第六天的更多相关文章
- Day1 Python基础学习
一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Day1 Python基础学习——概述、基本数据类型、流程控制
一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...
- Python 基础学习 总结篇
Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...
- (一)python基础学习
根据廖雪峰老师的python教程写一些学习总结! Python基础学习 1.使用list和tuple (1)list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时 ...
- python基础学习(起步)
目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...
- Python基础学习二
Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...
- Python基础学习一
Python基础学习一 1.变量与常量 变量名:大小写英文.数字.下划线的组合,数字不能开头 常量名:习惯上常量用大写字母命名,例如"PI" 2.多行输出 转义符:反斜杠(),如果 ...
- Python基础学习五
Python基础学习五 迭代 for x in 变量: 其中变量可以是字符串.列表.字典.集合. 当迭代字典时,通过字典的内置函数value()可以迭代出值:通过字典的内置函数items()可以迭代出 ...
随机推荐
- Java-关于类
java-关于类-成员初始化问题 成员初始化出现错误“ - Syntax error on token ";", , expected” java类不允许对成员进行操作,但可 ...
- 【RabbitMQ】5、RabbitMQ任务分发机制
当有Consumer需要大量的运算时,RabbitMQ Server需要一定的分发机制来balance每个Consumer的load.接下来我们分布讲解. 应用场景就是RabbitMQ Server会 ...
- 【Java面试】1、基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充. 源码分享:https: ...
- 2018-02-27 "Literate Programming"一书摘记之一
书到后才发现是Knuth的论文集, 第一篇就在网上: Computer programming as an art (1974). 其中"Taste and Style"(品味和风 ...
- Fiddler抓包学习——https请求的抓取
第一步:设置Fiddler windows下安装证书 打开fiddler 查看证书是否安装 说明已安装成功 设置端口号(下面手机设置代理所需要的) 第二部 手机端安装证书 通过fiddler查看电 ...
- selenium获取cookie
参考地址:https://www.cnblogs.com/lingwang3/p/7750156.html # 获取cookie import time from selenium import we ...
- Oracle 表操作(转)
1.增加新字段:alter table table_name add (name varchar(20) default 'http://www.zangjing.net/');. 2.修改表字段:a ...
- django中的中间件机制和执行顺序
这片文章将讨论下面内容: 1.什么是middleware 2.什么时候使用middleware 3.我们写middleware必须要记住的东西 4.写一些middlewares来理解中间件的工作过程和 ...
- Spring 自动清除缓存的配置
- spring.resources.chain.strategy.content.enabled=true - spring.resources.chain.strategy.content.pat ...
- GUI_鼠标事件
所有的组件都有鼠标和键盘监听器 import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import ja ...