首页 > 技术文章 > Python Day3

shaolin2016 2016-08-10 14:09 原文

一、set集合

集合是一个无序的,不重复的数据组合,它的主要作用如下:

  • 去重,把一个列表变成集合,就自动去重了

  • 关系测试,测试两组数据之前的交集、差集、并集等关系

      # 创建数值集合
      list_1 = set([1,2,3,6,9])
      list_2 = set([5,6,7,8,9])
      
      #交集(两个集合相同的部分)
      list_1.intersection(list_2)         
      list_1 & list_2
      
      #并集(合并两个列表,去重)
      list_1.union(list_2)
      list_1 | list_2
      
      #差集(list_1中有list_2中没有的)
      list_1.difference(list_2)
      list_1 - list_2
      
      #对称差集(两个列表中不相同的部分)
      list_1.symmetric_difference(list_2)
      list_1 ^ list_2
      
      #子集(查list_2是否是list_1的子集)
      list_2.issubset(list_1)
      list_3 <= list_1
      
      #父集(查list_1是否是list_2的父集)
      list_1.issuperset(list_2)
      list_1 >= list_3
      
      #添加一项
      list_1.add('567')
      #添加多项
      list_1.update([22,33,44])
      
      #删除(使用remove()可以删除一项)
      list_1.remove('6')
      list_1.pop() #随机删除一项
    

二、文件操作

文件操作流程:

1.打开文件,得到文件句柄并赋值给一个变量

2.通过句柄对文件进行操作

3.关闭文件

打开文件的模式有:

  • r,只读模式(默认)
  • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  • a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
  • r+,可读写文件。【可读;可写;可追加】
  • w+,写读
  • a+,同a(追加模式)
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
  • rU
  • r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注
  • rb
  • wb
  • ab

open文件操作演示

    f = open('data','r+',encoding='utf-8')
    f.read() #读取文件所有内容
    f.readline() #读取一行内容
    f.seek() #将光标跳到某个位置
    f.tall() #查看光标所在位置
    f.lush() #实时刷新
    f.write() #向文件中写入
    f.close() #关闭文件

with语句

为了避免打开文件后忘记关闭,可以通过管理上下文,即:
    with open('log','r') as f:
    
        ....
如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。
在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:
    with open('log1') as obj1, open('log2') as obj2:
        pass

三、字符编码与转码

image

1.首先通过编码【decode】转换为Unicode编码

2.然后通过解码【encode】转换为想要的编码

import sys
print(sys.getdefaultencoding())


msg = "我爱北京天安门"
#msg_gb2312 = msg.decode("utf-8").encode("gb2312")
msg_gb2312 = msg.encode("gb2312") #默认就是unicode,不用再decode,喜大普奔
gb2312_to_unicode = msg_gb2312.decode("gb2312")
gb2312_to_utf8 = msg_gb2312.decode("gb2312").encode("utf-8")

print(msg)
print(msg_gb2312)
print(gb2312_to_unicode)
print(gb2312_to_utf8)

四、函数

函数基本语法及特性

1.函数是什么?

函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method。

2.定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可
3.特性:

减少重复代码

使程序变的可扩展

使程序变得易维护

  • 定义语法

      def sayhi():#函数名
          print("Hello, I'm nobody!")
      sayhi() #调用函数
    
  • 可以带参数

      #下面这段代码
      a,b = 5,8
      c = a**b
      print(c)
      
      #改成用函数写
      def calc(x,y):
          res = x**y
          return res #返回函数执行结果
          
      c = calc(a,b) #结果赋值给c变量
      print(c)
    

函数参数与局部变量

  • 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量

  • 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值

推荐阅读