Python3学习笔记

来源:互联网 发布:艾蕾 知乎 编辑:程序博客网 时间:2024/05/17 03:11

python3学习笔记

  • 变量类型
    • 字符串
      • 操作
      • 字符串可以相加
    • 列表
      • 增加元素
      • 修改元素
      • 查找元素
      • 删除元素
      • 排序元素
    • 元组
    • 字典
      • 查找键值
      • 添加键对
      • 删除键对
      • 修改键对
      • 常见操作
      • 字典的遍历
  • 函数
    • 参数
      • 缺省参数
      • 不定长参数
    • 引用
    • 类型
      • 可变类型
      • 不可变类型
    • 匿名函数
  • 文件
    • 操作
  • 面向对象
    • 简介
    • 概念
    • 方法
    • 模式
      • 工厂模式
      • 单例模式
  • 异常
    • 捕获异常
    • 抛出异常
  • 模块
    • 常用操作
    • 模块的使用
    • 模块的发布与安装
      • 编写setuppy文件
      • 构建模块
      • 生成发布压缩包
      • 安装方式
  • 其他
    • 给程序传参数
    • 查看关键字
    • 常用操作
    • 运算符
    • 分隔符
    • 直接执行脚本

1.变量类型:

数字类型:int、long、float、complex布尔类型:true、false字符串(string)列表(list)元组(tuple)字典(dictionary)

1.字符串

str通过下标存储len(name)    #测字符串长度name[0]、name[1]...

.操作:

        切片:name[start:end-1:(+/-)step]        find,index(str)        r(从右往左)    #查找str是否出现        count(str)                #共出现str多少次        replace(str1,str2)            #将str1替换为str2        split(str)                #用str分割,(删除str)        capitalize()                #字符串第一个单词大写        title()                #每个单词首字母大写        startwith(str),endwith(str)        #判断是否以str开头/结尾返回Ture与False        lower(),upper()                #全部转换为小写/大写字母        rjust,ljust,center(width)        #靠左/右/中间对齐,并用空格填充至长度width        (l/s)strip                #删除(左/右)两边的空白字符        (r)partition(str)            #(从右)以str分割为str前、str、str后        splitlines                #按行分隔,返回一个包含各行的列表        is[alpha/digit/num/space]        #判断是否全部为字母/数字/(数字或字母)/空格返回T/F        join(str)                #str每个元素插入当前操作的字符串

.字符串可以相加:

n = "name"a = "address"number = 18print(n+a+str(number))print("%s%d"%(n,number))print("",end="\n")

2.列表

[]     list

1.增加元素

    append        #添加元素或列表    insert        #添加元素至指定位置    extend        #将列表中的元素添加进去    list1 + list2 = list1.extend(list2)

2.修改元素

    list[num] = changename

3.查找元素

    name(not)in list#判断name是否位于list中返回Ture/False    index,count    #name在list中是否出现/出现几次

4.删除元素

    del list[num]    #删除指定下标的元素    .pop()        #删除最后一个元素    .remove()    #删除元素

5.排序元素

    .sort()        #从小到大排序    .reverse    #改为逆序

3.元组

()    tuple#元组与列表相似,但其中的元素不能修改#只有一个值时需要加,号

4.字典

[]    dict        #字典的key值必须不可变

1.查找键值

    dict["key"]    dict.get("key",value)

2.添加键对

    dict["new_key"]=value

3.删除键对

    del dict.["key"]    dict.clear    #清空字典

4.修改键对

    dict.["key"]=new_value

5.常见操作

    len()        #返回键值对个数    keys(),values()    #返回key,values的列表    items()        #返回包含键对值元组的列表    has_key(key)    #判断是否含有指定key返回Ture/False

6.字典的遍历

    for temp in dict.items():        print(temp[0])        print(temp[1])                        for a,b in dict.items():        print(a)        print(b)

2.函数

pass        #为待写的程序代码占位置def function():    "帮助文档"return        #函数在return处结束        #return返回多个值可利用列表,元组,字典如果全局变量与局部变量名字相同,函数使用局部变量如果在函数中对全局变量进行修改,必须在前面加上global声明(不可变类型)

.参数

1.缺省参数

def function(a,b=num)        #为函数指定一个默认参数,当参数未输入时函数读取默认参数        #缺省参数必须位于最后        #缺省参数为可变类型时只初始化一次

2.不定长参数

def function(a,b,*args,**kwargs)        args    #类型为元组,存放多余所有未命名的变量参数            #若实参为列表,前加*将其解包                [a,b,c]---->a,b,c        kwargs    #类型为字典,存放多余命名参数            #若实参为字典,前加**将其解包                {"a":"1","b":"2"}---->a=1,b=2

.引用

函数参数是引用传递(地址)

.类型

1.可变类型

        list,dict    #如果变量a等于一个可变类型变量list,当list的值发生改变时,a的值同时发生改变

2.不可变类型

        int,long,bool,float,str,tuple    对可变类型来说,函数体的运算会更改传入的参数变量    传递列表时        a=a+a    #生成新列表        a+=a    #在原来的基础上直接修改

匿名函数

sum = lambda arg1,arg2:arg1+arg2        #可做参数传递        b.sort(key=lambda x:x['age'])    字典b中元素按age排序

3.文件

操作

open(文件名,访问模式)    "r"    #只读    (默认)                "w"    #写入(存在则删除)    +    用于读写                "a"    #追加    read(n)    #如果使用读了多次,下次读取的数据从上次结束开始(一次读取n字节)    readline    #每次读取一行    readlines    #读取内容按行显示    write()    #写入内容    tell()        #返回当前文件读写位置    seek(offset,from)    #设置当前文件读写位置            offset    #偏移量                from    #0,开头;1,当前;2,末尾    import os        os.rename oldfile newfile    #重命名        os.getcwd    #显示当前目录(pwd)        os.chdir    #修改当前路径        os.listdir    #将当前        os.remove,os.mkdir,os.rmdir    a = str(list)    list = eval(a)    # 将变量list转换为应该的类型

4.面向对象

1.简介

        class Name:            def function(self):            pass        a = Name()        x = a.function()
    类与对象    #列表中元素可以是对象        类是创建对象的模型,是对象的抽象        属性    变量        方法    函数

类添加新对象后,访问可以通过方法中self.属性获得
修改对象属性时最好用方法修改而不是直接修改
属性名前加上_为私有属性,不能随意修改(实际是在名字前加类名)

2.概念

        继承    #私有的属性、方法,不会被子类继承        重写    #子类中的方法会覆盖掉父类中同名的方法        调用    #在调用的父类方法前面加super().        多继承    #当前类.__mro__ 元组中决定调用方法前后(方法名相同时)        多态        类属性,实例属性    #用对象名访问实例属性,用类名访问类属性                #重名时实例属性会覆盖类属性        类方法    #实例方法上一行加上@classmethod,用于修改类属型            #第一个参数一般用clz        静态方法    #实例方法上一行加@staticmethod                #普通函数无参数

3.方法

        self                把对象自身当作第一个参数传递给self        __init__()方法            当创建完一个对象后会立马执行,不需调用            创建对象后实参会传给__init__()方法        __str__()方法            print(对象名)打印的是对象中__str__()方法的值        __del__()方法            删除一个对象时会默认调用__del__()方法        __new__方法            完成对象的创建,返回实例化的对象,一般重写时加上return object.__new__(cls)

4.模式

1.工厂模式

目的是使类功能单一,减少耦合性
#通过工厂方法实行对象创建
工厂方法 #定义了一个创建对象的接口(可以理解为函数),但由子类决定要实例化的类是哪一个

2.单例模式

一个类只有一个实例存在

          __instance = None            def __new__(cls, *args, **kw):                  if not cls.__instance:                        cls._instance = super().__new__(cls, *args, **kw)                      return cls._instance  

5.异常

#程序运行过程中发生错误无法执行,出现错误的提示
#函数产生异常就会结束

1.捕获异常

        try...except 异常名(as result)            #把可能出现问题的代码放在try中,把处理异常的代码放在except中            #result储存系统捕获到的错误提示        捕获所有异常    except:                    except Exception as result    #存储异常的基本信息        else    #如果没有出现一场就执行下面的代码        finally...    #无论异常产生最后一定会执行

2.抛出异常

自定义异常    #定义一个Exception的子类        raise 异常名    #抛出异常                #捕获异常时变量存储的是自定义异常的对象        raise    #将捕获的异常抛给系统,触发默认的异常处理

6.模块

导入模块的过程相当于执行的过程

1.常用操作

"__name__"    #可用于判断是直接执行的python脚本还是被引入执行的if __name__ = "__main__"    #在导入模块时不会执行import syssys.path.append()    #修改绝对路径,使不在当前目录下也能导入模块__all__    #用*导入时只导入列表变量中包含的函数

2.模块的使用

    import 文件夹.模块    from 文件夹 import 模块    文件夹中的__init__.py控制着包的导入行为,在其中定义的__all__变量控制着 from 包名 import * 时导入的模块    若只 import 包名,则不会导入包中的模块

3.模块的发布与安装

1.编写setup.py文件

from distutils.core import setup           setup(name='test',version='1.6',description='???',author='???',py_modules=["???"])

py_modules需指明所需包含的py文件(不需加.py)

2.构建模块

python setup.py build

3.生成发布压缩包

python setup.py sdist #打包后,生成最终发布压缩包name-version.tar.gz,目录结构

4.安装方式

找到压缩包后解压,然后进入文件夹执行命令

sudo python(3) setup.py install

若执行目录安装则在后面加 –prefix=安装路径

7.其他

1.给程序传参数

import syspython3 test.py testsys.agrv 为一个列表,其值为['test.py','test']

2.查看关键字

import keywordkeyword.kwlist

3.常用操作

dir 函数名    #函数具有哪些功能及用法input("text")    #函数的值为字符串型,若数字相加则进行转义

4.运算符

//        #取整除%        #取余**        #幂运算

5.分隔符

多行语句写在一行用;隔开
一行语句写在多行用\隔开

6.直接执行脚本

在脚本最前面加上这个即可

#!/usr/bin/python3