python基礎

String

1.String(字符串)中判斷字符串類型的方法,isdigit和isnumric都是判斷字符串是否都是數字,是則返回true,不然返回false,那麼它們有什麼不一樣之處呢?html

元組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.生成器是功能更強大的迭代器,返回的是一個迭代器的函數。python

INI文件讀寫

1.option也就是keymysql

目錄與文件操做

  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.整數和浮點數在計算機內部存儲的方式是不一樣的,整數運算永遠是精確的(除法難道也是精確的?是的!),而浮點數運算則可能會有四捨五入的偏差。git

 

2.在Python中,能夠把任意數據類型賦值給變量,同一個變量能夠反覆賦值,並且能夠是不一樣類型的變量。sql

  這種變量自己類型不固定的語言稱之爲動態語言,與之對應的是靜態語言。靜態語言在定義變量時必須指定變量類型,若是賦值的時候類型不匹配,就會報錯。例如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’。app

  執行a = ‘ABC’,解釋器建立了字符串‘ABC’和變量a,並把a指向‘ABC’:socket

  py-var-code-1

  執行b = a,解釋器建立了變量b,並把b指向a指向的字符串‘ABC’:

  

 

   執行a = ‘XYZ’,解釋器建立了字符串‘XYZ’,並把a的指向改成‘XYZ’,但b並無更改:

  

 

   因此,最後打印變量b的結果天然是‘ABC’了。

 

3.在Python中,一般用所有大寫的變量名錶示常量

相關文章
相關標籤/搜索