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中,通常用全部大写的变量名表示常量

原文地址:https://www.cnblogs.com/susanhonly/p/8514136.html