NoahZu / PythonPractice

Python练习demo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

###基本的数据类型:###

  • 序列:

    • tuple 定值的序列
    • list 可变的序列
  • 字典:

    • 键值对
    • 字符串:相当于tuple了
  • 运算:

    • **是乘方
    • 其他的跟java差不多
  • 其他:

    • for 循环中也可以用 a in list这种形式
    • range(n) 生成一个0-n的数组(不可变)
    • dir()用来查询一个类或者对象所有属性
    • 对于一个集合enumerate()函数可以同时得到下标和元素
    • 如果你多个等长的序列,然后想要每次循环时从各个序列分别取出一个元素,可以利用zip()
  • 函数的定义:

      def name(a,b):
          语句
        return a
    
  • 关于函数的参数传递:

    • 基本数据类型的变量,变量传递给函数后,函数会在内存中复制一个新的变量,从而不影响原来的变量。(我们称此为值传递)

    • 但是对于表来说,表传递给函数的是一个指针,指针指向序列在内存中的位置,在函数中对表的操作将在原有内存中进行,从而影响原有变量。 (我们称此为指针传递)

    • 函数也可以使用关键字差un各地,从而可以打乱传递的位置:

        def f(a,b,c):    return a+b+c
        使用:print(f(c=2,b=1,a=1))
      
  • 类的定义:

      class name(继承的对象):
             	属性定义
              方法定义
    

    注意,python中的方法的第一个参数总是self本身,在java中是隐式的,而在python中是显式的 init()是构造函数,第一个参数也要传self 但是调用的时候不需要传self

  • dir()用来查询一个类或者对象所有属性

  • 文件的读写:

    • 方式:对象名 = open(文件名,模式)
    • 模式:
      • r 打开只读文件,该文件必须存在。
      • r+ 打开可读写的文件,该文件必须存在。
      • w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
      • w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
      • a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
      • a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
      • 上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
  • 模块:

    • 一个python文件就是一个模块

    • 模块的引入:

      • import a as b # 引入模块a,并将模块a重命名为b
      • from a import function1 # 从模块a中引入function1对象。调用a中对象时,我们不用再说明模块,即直接使用function1,而不是a.function1。
      • from a import * # 从模块a中引入所有对象。调用a中对象时,我们不用再说明模块,即直接使用对象,而不是a.对象。
    • 模块的搜索路径

      • 程序所在的文件夹
      • 操作系统环境变量PYTHONPATH所包含的路径
      • 标准库的安装路径
  • 生成器:

    • 主要依靠yield,当生成器遇到一个yield时,会暂停运行生成器,返回yield后面的值。当再次调用生成器的时候,会从刚才暂停的地方继续运行,直到下一个yield。
  • 表推导:

    • 写法:L = [x**2 for x in range(10)]
    • 意思是这样生成表,对range中的每一个元素执行一个表达式
  • 有用的函数

    • map()有两个参数,一个是lambda所定义的函数对象,一个是包含有多个元素的表,map()的功能是将函数对象依次作用于表的每一个元素,每次作用的结果储存于返回的表re中
    • filter函数的第一个参数也是一个函数对象。它也是将作为参数的函数对象作用于多个元素。如果函数对象返回的是True,则该次的元素被储存于返回的表中。就相当于过滤器
    • reduce函数的第一个参数也是函数,但有一个要求,就是这个函数自身能接收两个参数。reduce可以累进地将函数作用于各个参数,比如:print reduce((lambda x,y: x+y),[1,2,5,7,9])。educe将表中的前两个元素(1和2)传递给lambda函数,得到3。该返回值(3)将作为lambda函数的第一个参数,而表中的下一个元素(5)作为lambda函数的第二个参数,进行下一次的对lambda函数的调用,得到8
  • ​正则表达式

  • 正则表达式需要导入库re

  • 几个方法:

    • re.search(pattern, string) 搜索整个字符串,直到发现符合的子字符串。
    • re.search(pattern, string) 搜索整个字符串,直到发现符合的子字符串。
    • m.group()来调用搜索的结果
    • str = re.sub(pattern, replacement, string) 在string中利用正则变换pattern进行搜索,对于搜索到的字符串,用另一字符串replacement替换。返回替换后的字符串。
    • re.split() # 根据正则表达式分割字符串, 将分割后的所有子字符串放在一个表(list)中返回
    • re.findall() # 根据正则表达式搜索字符串,将所有符合的子字符串放在一个表(list)中返回
  • 正则表达式的语法:

    • 单个字符: - . 任意的一个字符 - a|b 字符a或字符b - [afg] a或者f或者g的一个字符
      - [0-4] 0-4范围内的一个字符 - [a-f] a-f范围内的一个字符 - [^m] 不是m的一个字符 - \s 一个空格 - \S 一个非空格 - \d [0-9] - \D [^0-9] - \w [0-9a-zA-Z] - \W [^0-9a-zA-Z]
    • 重复: 紧跟在单个字符之后,表示多个这样类似的字符: - * 重复 >=0 次 - + 重复 >=1 次 - ? 重复 0或者1 次 - {m} 重复m次。比如说 a{4}相当于aaaa,再比如说[1-3]{2}相当于[1-3][1-3] - {m, n} 重复m到n次。比如说a{2, 5}表示a重复2到5次。小于m次的重复,或者大于n次的重复都不符合条件。
    • 位置 - ^ 字符串的起始位置 - $ 字符串的结尾位置​
  • 日期与时间

    • 需要导入time包
      • time.time()返回以秒计算的时间
      • time.clock()
      • time.sleep(10) 相当于java线程休眠 单位是秒
    • datetime包
      • datetime.datetime(year,month,day,h,s) 初始化一个datetime对象,可以获取关于这个时间日期的更多信息

      • 运算:

        • datetime对象可以相加 直接用+就可以
        • datetime.timedelta(xx = a) 可以获取一个时间差值
      • datetime对象与字符串的转化

          from datetime import datetime
          format = "output-%Y-%m-%d-%H%M%S.txt" 
          str    = "output-1997-12-23-030000.txt" 
          t      = datetime.strptime(str, format)
        

About

Python练习demo


Languages

Language:Python 100.0%