• python基础


    String

    1.String(字符串)中判断字符串类型的方法,isdigit和isnumric都是判断字符串是否都是数字,是则返回true,否则返回false,那么它们有什么不同之处呢?

    元组tuple

    1. 元组可以通过下标索引的方式来读取元素,注意索引下标从0开始
    2. 元组可以通过负数下标索引的方式反向读取元素
    3. 元组可以通过 起始:终止 方式截取一段元素,其中终止是不包含的开括号
    4. 元组的元素不可修改,但可删除

    列表

    1. 元组与列表可互相转换
    2. 列表拷贝的意思是,将A列表的值拷贝到B列表中去
    3. 列表清空,不影响
    4. python具有切片机制,可运用在序列中
    5. 元组不能修改元素,可删除;列表可修改元素可删除

    字典

    1. 用get获取指定key的value,如果参数不是key,则获取不到,在获取不到的情况下,回传一个默认值
    2. 字典不能修改key,只能修改value,找不到key时,就使用新的value插入到字典中去
    3. 字典不能删除value,因为是通过key去找的

    函数

    1. 在python中一切皆为对象,在python中不能说是值传递或引用传递,而是分为可变对象和不可变对象。
      可变对象举例:list、dict、set
      不可变对象举例:strings、tuples、numbers
    2. 模块是比包更大的范围,模块是包的集合
    3. 模块和包体现的是一种组织思想,有好的组织才能有好的架构设计

    迭代器和生成器

    1.生成器是功能更强大的迭代器,返回的是一个迭代器的函数。

    INI文件读写

    1.option也就是key

    目录与文件操作

    1. os模块的删除目录方法,目标删除目录必须存在且无子目录、子文件
    2. path模块获取文件大小单位为字节
    3. os模块所提供的目录遍历方法walk,返回值为一个迭代器对象,它的每个部分包含一个元组,即(目录X, [目录X下的目录列表], [目录X下的文件列表])

    XML解析处理-Element Tree

    1. 1.python中解析xml的方法有很多,ElementTree是其中之一
      ElementTree中每个节点(即Element)具有如下属性:
      • tag:string对象,标识该元素类型
      • attrib:dictionary对象,标识该元素属性
      • text:string对象,标识该元素的文本
      • tail:string对象,标识该元素可选的尾字符串
      • child elements:标识子节点
        注意:Element类型是一种灵活的容器对象,用于在内存中存储结构化数据

    2. 使用ET.fromstring("xml格式字符串")即可实现对xml格式的字符串进行遍历读取、新增、修改和删除。

    SMTP发送邮件

    1. 使用smtplib进行文本格式、HTML格式和带附件的邮件发送
      • 导入smtplib模块
        import smtplib
      • 关键函数说明
        1)创建smtp对象
        smtp = smtplib.SMTP([host [, port[, localhost]]])
        参数说明:
        host:smtp服务地址,例如126邮箱的是:smtp.126.com
        port:smtp服务端口
        localhost:如果你的smtp服务在本机,则只需指定localhost即可

        2)发送邮件函数
        SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
        参数说明:
        fromaddr:邮件发送地址
        to
        addrs:邮件接收地址列表
        msg:邮件内容
        mail_options,rcpt_options:可选参数

    2. 发送内容的构建中,将plain改为html标识邮件内容为html格式,邮件内容采用html语言来格式化

    3. 附件格式邮件需要导入新的类:from email.mime.multipart from MIMEMultipart
      需要使用MIMIMultipart构建内容结构,关键代码如下:

      # 发送内容构建 # html标识发送内容为文本格式
      msg = MIMEMultipart()
      msg["From"] = "sender@163.com"
      msg["To"] = receivers

      # 构建邮件标题
      msg["Subject"] = Header("附件格式邮件", "utf-8")

      # 构建邮件正文内容
      msg.attach(MIMEText("附件格式邮件", "plain", "utf-8"))

      # 构造附件,多个附件同理
      attach1 = MIMEText(open("smtp_attach.py", 'rb').read(), "base64", "utf-8")
      attach1["Content-Type"] = "application/octet-stream"

      # 这里filename随意写,将会在邮件中显示
      attach1["Content-Disposition"] = "attachment;filename=code.py"

      # 关联附件到邮件中
      msg.attach(attach1)
    4. 构建文本和html格式的邮件使用MIMEText构建,使用plain标识文本内容格式,使用html标识html内容格式
    5. 对于附件格式则需要使用MIMEMultipart

    SMTP发送邮件

    1. 安装pymysql: pip install PyMySQL
    2. 在pymysql中提供了Connection和Cursor对象来管理操作MySQL
      • Connection
        代表一个与MySQL Server的socket连接,使用connect方法来创建一个连接实例

        connect()-------创建一个数据库连接实例
        begin()----------开始一个事务
        close()----------发送一个退出消息,并关闭连接
        commit()--------提交修改至数据库
        cursor()---------创建一个cursor(游标)实例
        ping()------------检测服务器是否在允许
        rollback()--------回滚当前事务
        selectdb(db)---设置当前db
        show
        warning---显示警告信息

      • Cursor
        代表一个与MySQL数据库交互对象,使用Connection.Cursor()在当前socket连接上交互对象
        close()-------------关闭当前cursor
        execute()----------执行一个sql语句
        executemany()---执行批量sql语句
        fetchall()-----------取所有数据
        fetchone()---------取一条数据

    遗留问题

      1. 利用生成器函数去读大文件,例如10G的文件,你可以利用生成器函数,每次只读100M进行处理,处理完后再读取下一个100M,如此迭代下去
      2. 提问:os_walk.py为什么最后两个for是平级的?不平级的效果为什么遍历不到部分文件最深层?
      3. 提问:字符串存储中文时如何转换
      4. 用类封装一个通用的ini文件操作类
      5. 提问:格式化日期时间函数strftime为什么后面要加上time.loacltime()
      6. 使用ET.fromstring("xml格式字符串")实现对xml格式的字符串进行遍历读取、新增、修改和删除动作

    1.整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

    2.在Python中,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。

      这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下(//表示注释)

    int a = 123;//a是整数型类型变量
    a = "ABC";//错误;不能把字符串赋给整型变量
    View Code

      和静态语言相比,动态语言更灵活,就是这个原因。

      最后,理解变量在计算机内存中的表示也非常重要。例如下面的代码:

    a = 'ABC'
    b = a
    a = 'XYZ'
    print(b)
    View Code

      最后一行打印出变量b的内容到底是‘ABC’呢还是‘XYZ’?如果从数学意义上理解,就会错误地得出b和a相同,也应该是‘XYZ’,但实际上b的值是‘ABC’。

      执行a = ‘ABC’,解释器创建了字符串‘ABC’和变量a,并把a指向‘ABC’:

      py-var-code-1

      执行b = a,解释器创建了变量b,并把b指向a指向的字符串‘ABC’:

      

       执行a = ‘XYZ’,解释器创建了字符串‘XYZ’,并把a的指向改为‘XYZ’,但b并没有更改:

      

       所以,最后打印变量b的结果自然是‘ABC’了。

    3.在Python中,通常用全部大写的变量名表示常量

  • 相关阅读:
    单元测试的好处
    注入式开发(二):.NET 匿名函数
    ASP.NET MVC 提供与访问 Web Api
    Oracle可插拔数据库的jdbc连接串写法
    操作系统学习笔记:保护
    条件编译符号与发布
    操作系统学习笔记:I/O输入系统
    如何清空文件上传控件里的选定文件(路径)
    如何才能成为一名架构师?
    sql里的in对应linq的写法 及 IQueryable转化为Dictionary
  • 原文地址:https://www.cnblogs.com/susanhonly/p/8514136.html
Copyright © 2020-2023  润新知