Python基礎-week02,python-week02

來源:互聯網
上載者:User

Python基礎-week02,python-week02
本節內容摘要:0.xmind8破解及安裝(想要破解版及資料請下方留言,這裡不做具體說明)1.模組初識2.pyc是什麼?3.python資料類型(bytes資料類型,資料運算子和拾遺)4.列表的使用1-2

5.元組  練習:購物車程式練習及執行個體

6.字串常用操作

7.字典的使用  練習:三級菜單一實例

8.作業:購物車最佳化

 

一.模組初識

  import匯入Py內建模組例如os,sys等及其自己編寫的Py檔案,匯入到其他檔案中,預設尋找目前的目錄。如果不在同一目錄,會報錯,將該自訂py檔案模組放到site-packages目錄裡,其他方法會在後面筆記中中講解。

  Python的強大之處在於他有非常豐富和強大的標準庫和第三方庫,幾乎你想實現的任何功能都有相應的Python庫支援,以後的課程中會深入講解常用到的各種庫,現在,我們先來象徵性的學2個簡單的。

    sys:
      import sys
      print(sys.argv)
    os:
      import os
      os.system("df -h") #調用系統命令
    import os sys
     os.system(''.join(sys.argv[1:])) #把使用者的輸入的參數當作一條命令交給os.system來執行

 

二.pyc是什麼?

  在說這個問題之前,我們先來說兩個概念,PyCodeObject和pyc檔案。

  

 

 

  我們在硬碟上看到的pyc自然不必多說,而其實PyCodeObject則是Python編譯器真正編譯成的結果。我們先簡單知道就可以了,繼續向下看。
  當python程式運行時,編譯的結果則是儲存在位於記憶體中的PyCodeObject中,當Python程式運行結束時,Python解譯器則將PyCodeObject寫回到pyc檔案中。
  當python程式第二次運行時,首先程式會在硬碟中尋找pyc檔案,如果找到,則直接載入,否則就重複上面的過程。
  所以我們應該這樣來定位PyCodeObject和pyc檔案,我們說pyc檔案其實是PyCodeObject的一種持久化儲存方式。

 

  總結:pyc其實就是Python 先行編譯的的一個檔案,每次運行py檔案時候,會檢測該pyc檔案是否存在,如果不存在重新編譯產生,如果存在會檢查pyc和源檔案哪個更新時間最新,如果源檔案沒有更新直接從Pyc檔案執行速度快,如果源檔案已經更新了呢,則會編譯最新源檔案產生Pyc檔案。

 

三.python資料類型

 1.數值型

  整型(int):在32位機器上,整數的位元為32位,取值範圍為-2**31~2**31-1,即-2147483648~2147483647
  在64位系統上,整數的位元為64位,取值範圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807

  浮點型(float):浮點數用來處理實數,即帶有小數的數字。類似於C語言中的double類型,佔8個位元組(64位),其中52位表示底,11位表示指數,剩下的一位表示符號。
  浮點數的例子:3.14和52.3E-4,其中E表示10冪次方,這裡表示52.3*10**-4次方的縮寫。 

  
  複數(complex):例如3+4j,由實數和虛數構成,如果要遍曆複數,需要分別遍曆實數和虛數部分。

   2.字串
  python中的字串在C語言中體現為是一個字元數組,每次建立字串時候需要在記憶體中開闢一塊連續的空,並且一旦需要修改字串的話,就需要再次開闢空間,萬惡的+號每出現一次就會在內從中重新開闢一塊空間。
字串格式化輸出

  name = "alex"print "i am %s " % name  #輸出: i am alex
  PS: 字串是 %s;整數 %d;浮點數%f

  字串常用功能:
    移除空白:strip()去首尾,lstrip()去左邊,rstrip()去右邊
    分割:split(',')
    長度:len()
    索引:zifucuan[i]
    切片:zifucuan[1:4]
    替換:replace('c1','c2'):把字串裡的c1替換成c2。故可以用replace(' ','')來去掉字串裡的所有空格

 3.列表
  建立列表:
name_list = ['alex', 'seven', 'eric']或name_list = list(['alex', 'seven', 'eric'])
  
  基本操作:
    索引:從0開始,list[-1]為非空列表最後一個
    切片:list[1:5]
    追加:list.append()
    刪除:list..pop()/list.remove()/del list
    長度:len()
    迴圈:for i in list:
    包含:(元組)


 4.元祖(不可變的列表)
    常用操作:與列表操作一樣。
    ages = (11, 22, 33, 44, 55)或ages = tuple((11, 22, 33, 44, 55))
  
  5.字典
  建立字典:
person = {"name": "mr.wu", 'age': 18}或person = dict({"name": "mr.wu", 'age': 18})
  
  常用操作:
    索引
    新增
    刪除
    鍵、值、索引值對
    迴圈
    長度

  6.布爾類型
  True/False
 
  7.None

   

***************資料運算子及其優先順序

 

  

  

 

  

 

  

 

  

  

 

    

  

 

 

    

  

 

   **********拾遺:

  1.三元運算

     格式:retsult  =值1 if 條件 else 值2

     條件為真,輸出result=值1

    條件為假,輸出result=值2

      例子:a,b,c=1,3.5

      d=a if a>b else c

      會輸出d=5

      d=a if a<b else c

      會輸出d=1

  2.進位

    a.二進位 01 

    b.八進位 01234567

    c.十進位 0123456789

    d.十六進位 0123456789ABCDEF,首碼標記法BH,尾碼標記法0x53

    瞭解一下二進位轉換成16進位的方法!

  3.對象

    你找到對象了嗎?

    在python裡一切事物皆對象,以後別再告訴別人你沒有對象啦,對象基於類建立,例如清純類、成熟類、萌妹子類,魅惑類,知性類......

 

******************bytes資料類型:

    (1)Python 3最重要的新特性之一是對字串和位元據流做了明確的區分。文本總是Unicode,由str類型表示,位元據則由bytes類型表示。Python 3不會以任意隱式的方式混用strbytes,你不能拼接字串和位元組流,也無法在位元組流裡搜尋字串(反之亦然),也不能將字串傳入參數為位元組流的函數(反之亦然)。

    (2)bytes和str的差異:

        回到bytesstr的身上。bytes是一種位元流,它的存在形式是01010001110這種。我們無論是在寫代碼,還是閱讀文章的過程中,肯定不會有人直接閱讀這種位元流,它必須有一個編碼方式,使得它變成有意義的位元流,而不是一堆晦澀難懂的01組合。因為編碼方式的不同,對這個位元流的解讀也會不同,對實際使用造成了很大的困擾。下面讓我們看看Python是如何處理這一系列編碼問題的:

        >>> s = "中文"

        >>> s '中文'

        >>> type(s) <class 'str'>

        >>> b = bytes(s, encoding='utf-8')

        >>> b b'\xe4\xb8\xad\xe6\x96\x87'

        >>> type(b) <class 'bytes'>

      

      

    

    (3).如bytes與str的相互轉換:我們都知道,字串類str裡有一個encode()方法,它是從字串向位元流的編碼過程。而bytes類型恰好有個decode()方法,它是從位元流向字串解碼的過程。除此之外,我們查看Python源碼會發現bytesstr擁有幾乎一模一樣的方法列表,最大的區別就是encodedecode

  從實質上來說,字串在磁碟上的儲存形式也是01的組合,也需要編碼解碼。

  如果,上面的闡述還不能讓你搞清楚兩者的區別,那麼記住下面兩幾句話:

      在bytes和str的互相轉換過程中,實際就是編碼解碼的過程,必須顯式地指定編碼格式。

      #Author Jame-Mei

      msg1='我愛中國'
      print (msg1)

      print ("\n將str轉換成bytes編碼:")
      print (msg1.encode(
encoding='utf-8'))
      #python3預設為utf-8,python2.x如果沒有utf-8會報錯!!


      print ('\n將bytes轉換成str:')
      print (b'\xe6\x88\x91\xe7\x88\xb1\xe4\xb8\xad\xe5\x9b\xbd'.decode(
encoding='utf-8'))

      

      (4).為何要bytes和str相互轉換呢?

      涉及python網路編程,將str字串類型轉換成bytes類型進行通訊和傳輸。

 

  

    

  

 

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.