Python学习记录

深copy和浅copy

  • 浅copy有三种形式

    import copy # 导包的前提

    • namebak=copy.copy(name)
    • namebak=name[:]
    • namebak=list(name)
  • 深copy
    • namebak=copy.deepcopy(name)

元祖

  • 元祖就两个方法 count index,只能查不能改

字典

  • 字典是无序的
  • key必须是唯一的,天生去重
  • info.popitem()#随机删除一个
  • info.pop()#必须制定删除谁
  • info[key] 只有在key存在的情况下,才可以查找,不然会报错。安全一点方法:info.get(key),没有就返回None,有就返回对应的值。
  • setdefault: info.setdefault(key,value) 如果字典里存在key那么不做修改,如果字典里不存在则添加一条
  • update; info.update(b) # 两个字典合并,中间有key重叠则替换,没有就合并
  • 《追风筝的人》
  • 《白鹿原》
  • 《林达看美国》

集合

  • type 查看数据类型
  • set() 集合是无序的,可以去重
  • 交集(&):list_1.==intersection==(list_2)
  • 并集(|):list_1.==union==(list_2)
  • 差集(list_1-list_2):list_1.==difference==(list_2) 把list_1中属于list_2的元素去掉
  • 对称差集(^):list_1.==symmetric_difference==(list_2) 把1中和2中都有的去掉后合并返回
  • 子集:issubset 返回True或False
  • 父集:issuperset 返回True或False
  • isdisjoint 如果两个集合的交集为空,则返回True
  • add 添加单个元素
  • update 添加多个 list_1.update([1,2,3,4])
  • remove 删除一个元素, discard也是删除一个元素, remove如果删除的元素不存在集合里会报错,discard不会

文件操作

  • open: f = open(“geci”,encoding=”UTF-8”)#文件句柄
    f = open("geci",encoding="UTF-8")# 文件句柄
    data1 = f.read()
    data2 = f.read()
    print(data2)

    此时的data2为空。原因是data1读完之后相当于此时的光标位于文件的最后面,再次读文件是,往下没有内容了,所以返回为空。

  • “w”:f = open(“geci2”,”w”,encoding=”UTF-8”)相当于创建一个geci2新文件。只有写的没有读的权限
  • “r”: 只有读没有写的权限
  • “a”: 追加内容,此时不会覆盖原内容,没有读的权限
  • tell():返回光标的位置
  • seek():回到某个光标
  • seekable():判断光标是否可移动,False True
  • flush()
    写文件的时候,写一点会暂时存放在一个缓存中,当缓存达到一定的数值,就会写入到硬盘中,flush的作用就是强制刷新,写入硬盘
  • with语句
    • 为了避免打开文件忘记关闭,可以用with打开
      with open("geci_3", "w",encoding="utf-8") as f等价于f=open(“geci2”,”r”,encoding=”utf-8”)
    • 可以打开多个文件 with open() as f1,with open() as f2

      字符编码和转码

    • Unicode 所有的中文和英文字符占两个字节
    • ascii码 只能存英文和特殊字符,一个英文字符占一个字节,不能存中文
    • utf-8 默认所有的英文字符按照ascii码存储,所有的中文字节统一3个字节

      函数

    • 函数式编程:只要输入是确定的输出就是确定的(公式化函数)
    • 面向对象
    • 面向过程:没有返回值的函数。
    • 函数的返回值的个数>1的时候,返回的是元祖(所有返回值放到一个元祖里面)
    • 位置参数和关键字参数:关键字参数不能位于位置参数前面,关键字参数位置可以互换。
    • 含有默认参数的函数:调用的时候,默认参数可以不传 def text(x, y=2) 调用:text(2)
    • **kwargs:将多个关键字参数转化成字典的key-value
    • *args 接受N个位置参数
    • 参数组一定要放在最后面
    • 最大的递归999层 超过就报错。为了保护内存

      装饰器

    • 定义:本质是函数(装饰其他函数,就是为其他函数添加附加功能)
  • 原则:
    • 1.不能修改被装饰的函数源代码
    • 2.不能修改被装饰的函数的调用方式
  • 函数即是“变量”
  • 高阶函数:
    • 把一个函数名当作实参传给另外一个函数
    • 返回值中包含函数名
  • 高阶函数 + 嵌套函数 = 装饰器

生成器 generator

  • 列表生成式 [i*2 for i in range(10)]
  • 这种一边循环一边计算的机制,称为生成器
  • 跟列表生成式的区别,是用到的时候才会生成相应的数据。列表是所有的都生成好了
  • 只记录当前的位置,只有一个next()方法
  • send() : 给yield传值
  • 函数里有yield 就是个生成器

迭代器 Iterator

  • 可以被next()函数调用并不断返回下一个值得对象称为迭代器
  • 可以直接作用于for循环的对象统称为迭代对象Iterable
  • 有next()方法就是迭代器
  • 生成器肯定是迭代器

模块

  • 定义:本质是.py结尾的python文件(文件名:test.py 对应的模块名test)
  • 导入包的本质:就是执行该包下的init.py文件
  • 时间戳:当前时间距离1970.1.1 0时0分 的秒数。
  • time.gmtime() # 装换为UTC(标准时间)
  • time.localtime() # 转换为本地时间
a= time.strftime("%Y-%m-%d %H:%M:%S", x)
print(a)

c = "2018-02-06 21:16"
b=time.strptime(c,"%Y-%m-%d %H:%M")
print(b)


  • shelve 模块

是一个简单的kv将内存数据通过文件持久化的模块
import datetime
import shelve

file = shelve.open("shelve_test")

// name = ["Luys","JunZi","Zoe"]
// info = {"age":22,"j_age":18,"Z_age":[1,2,3]}
// file["name"] = name
// file["info"] = info
// file["date"] = datetime.datetime.now()
//------生成三个文件,不用管

print(file.get("name"))
print(file.get("info"))
print(file.get("date"))

file.close()
  • shutil模块
    • 高级的文件,文件夹,压缩包的处理模块(文件的copy)
    • copyfileobj 将文件内容copy到另一个文件中,可以是部分内容。shutil.copyfileobj(f,df)
    • copyfile 根据文件名,copy一个文件的内容到另一个文件里面。shutil.copyfile(“geci_3”,”geci_4”)(目标文件可不存在) 只copy内容
    • copymode 仅copy权限。内容,组,用户均不copy
    • copystat copy状态信息,不copy内容
    • copy 拷贝文件内容和权限
    • copytree copy目录
    • rmtree() 删除目录
  • shutil.make_archive(base_name,format,….)
    • base_name:压缩文件名,可以传压缩包的路径
    • format:压缩种类(zip,tar,bztar,gztar)
    • roo_dir:要压缩的文件路径
    • owner:用户,默认当前操作
    • group:组
    • logger:用于记录日记
  • zipfile 模块
    • 单个压缩文件
z = zipfile.ZipFile("Zoe.zip","w")
z.write("geci")
print("----")
z.write("geci_3")
z.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ltym2014

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值