zoukankan      html  css  js  c++  java
  • 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中,通常用全部大写的变量名表示常量

  • 相关阅读:
    HDU 5528 Count a * b 欧拉函数
    HDU 5534 Partial Tree 完全背包
    HDU 5536 Chip Factory Trie
    HDU 5510 Bazinga KMP
    HDU 4821 String 字符串哈希
    HDU 4814 Golden Radio Base 模拟
    LA 6538 Dinner Coming Soon DP
    HDU 4781 Assignment For Princess 构造
    LA 7056 Colorful Toy Polya定理
    LA 6540 Fibonacci Tree
  • 原文地址:https://www.cnblogs.com/susanhonly/p/8514136.html
Copyright © 2011-2022 走看看