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基础学习第六天的更多相关文章

  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. How to distinguish between strings in heap or literals?

    Question: I have a use case where I can get pointers of strings allocated either in memory or litera ...

  2. SpringCloud初体验之Eureka

    Eureka简介 SpringBoot简化了Spring工程的复杂度,之前复杂的Spring工程被拆分成了一个个小的SpringBoot工程.那么SpringBoot之间如何通讯,相互获取信息呢?这就 ...

  3. Git实战手册(二): 标签应用和版本管理

    教程所示图片使用的是 github 仓库图片,墙内朋友请移步原文地址 有空就来看看个人技术小站, 我一直都在 0. 背景介绍 当一个代码仓库进过长时间的迭代,针对不同的时期和需求,必定会有不同的版本. ...

  4. layui switch 开关监听 弹出确定状态转换

    不废话,直接上图: 原始状态:   点击确定: 点击取消或者X 代码: <!doctype html> <html lang="en"> <head& ...

  5. 3038 3n+1问题

    3038 3n+1问题  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 白银 Silver 题解       题目描述 Description 3n+1问题是一个简单有趣而又没有 ...

  6. SAP MM 并非奇怪现象之MB5B报表查不到某一笔出库记录?

    物料号:1301002696 工厂代码:2160 MB5B,如下查询条件, 查询结果中,期初与期末库存数量都是0,期间的出库入库数量都是0.事实上该物料期初应该是有库存的.并且我用MB51相同时间段查 ...

  7. ionic打包报错Execution failed for task ':processDebugResources'

    ionic 打包的时候报了这样一个错误:Execution failed for task ':processDebugResources' 分析: compile "com.android ...

  8. Android--px(像素)和dp、sp之间的相互转化

    public class DensityUtil { public DensityUtil() { } public static int dip2px(Context var0, float var ...

  9. Asp.Net Core 使用Quartz基于界面画接口管理做定时任务

    今天抽出一点点时间来造一个小轮子,是关于定时任务这块的. 这篇文章主要从一下几点介绍: 创建数据库管理表 创建web项目 引入quarzt nuget 包 写具体配置操作,实现定时任务处理 第一步:创 ...

  10. Java:构造代码块,静态代码块

    本文内容: 局部代码块 构造代码块 静态代码块 补充 首发日期:2018-03-28 局部代码块: 局部代码块用于限制变量的生命周期,如果希望某些变量在某一过程之后直接失效而不希望被后面继续操作时,可 ...