Python小知識 (1)

來源:互聯網
上載者:User

1、Python中的變數沒有類型的概念

   例如,建立一個List,如下    

Movies =["hello", "python", "haha"] # 建立列表print(len(Movies)) # 列印Movies的長度Movies.pop("python")


2、判斷一個變數是不是list類型  

M = ['A', ['B', ['C', 'D','E']]]for x in M:    if isinstance(x, list):       for y in x:           if isinstance(y, list):               for z in y:                   print(z)           else:               print(y)    else:       print(x)



3、定義和使用函數 

 M = ['A', ['B', ['C', 'D','E']]]   def Pr(A):   #定義函數Pr       for x in A:           print(x)


   Pr(M)  # 調用函數Pr

4、String是不可改變的變數
   
在Python中,一旦一個字串被建立之後,它就不能再改變
    s = ' hellopython '
    s =s.strip() # 去掉s中開頭及結尾的空白字元

   此外,tuple也是不可變的變數,所有的數字變數也都不可變。

5、變數並不真正擁有資料   
    Pythonvariables contain a reference to data object which contains thedata.

6、幾種內建的函數    

  • range(N): 返回0到N-1之間的整數
  • list()
  • enumerate()
  • int()
  • id()
  • next()   


   內建函數(build-in functions,BIF)所在的命名空間為__builtins__
   
以下程式將在螢幕上連續列印出5個a:
    for i inrange(5):
       print('a', end='')

7、顯示和改變目前的目錄,並讀取指定檔案的內容   

import osprint(os.getcwd())  # 獲得目前的目錄os.chdir('..')     # 跳轉到上一層目錄print(os.getcwd())file =open('test.txt')  # 開啟檔案test.txtprint(file.readline(), end='')  # 從file中讀取一行print(file.readline(), end='')  #讀取的一行包含最後的\nprint(file.readline(), end='')file.seek(0)  # 回到檔案的開頭位置'''讀取檔案中的每一行文本並輸出'''for line in file:    print(line, '')  #每行最後的\n會被輸出,但是print不會添加額外的分行符號file.close()



8、切分(split)字串
  

str = 'hello,world,hello,python'   for x in str.split(','):    print(x, end=':') # 輸出 hello:world:hello:pythonfor x in str.split(',', 1):    print(x, end=':') # 輸出 hello:world,hello,pythonfor x in str.split(',', 2):    print(x, end=':') # 輸出 hello:world:hello,python for x in str.split(',',3):    print(x, end=':)  #輸出 hello:world:hello:python

  

如果要切分的字串是空行,則會出錯,可以用find來檢測

data = open('test.txt')for x in data:    if x.find(',') != -1 :        print(s.split(','))

 其中,也可以將檢測的語句改為
    if not x.find(',') == -1 :

9、異常處理

try:    data = open('test.txt')    for line in data:        try:            print(line.split(','))        except ValueError:             pass  # 直接跳過      data.close()exceptIOError:    print('檔案不存在')

 

   ValueError: a ValueError occurs when your data does notconform to the expected format
   IOError: an IOError occurs when your data can not beaccessed properly

9、定位異常的類型

try:    file =open("misssing.txt")    # 該檔案(missing.txt)實際上並不存在    print(file.readline(), end='')except:    print('file does not exist')finally:   file.close()    # 報異常:NameError: name 'file' is not defined


 這是因為檔案missing.txt不存在,因此open("missing.txt")會拋出異常,因而file不存在。為了修複這個bug,可以在關閉file之前測試file是否存在,如

...finally:    if 'file' in locales():  # 注意這裡的引號不可少        file.close()

thelocalesBIF returns a collection of names defined in thecurrent scope.

When an exception is raised and handled by yourexcept suite, the Python interpreter passes anexception object into thesuite.

try:    file = open("misssing.txt")    print(file.readline(), end='')except IOError as err:    print('file does not exist : ' + str(err))    print(err)finally:    if 'file' in locals():        file.close()

輸出為:

file does not exist : [Errno 2] No such file or dir
[Errno 2] No such file or directory: 'misssing.txt'


這裡,BIF str將err轉化為字串。


   

10、使用with來處理檔案相關操作

在上例中,我們顯式地關閉了已開啟的檔案,使用with關鍵字則可以簡化這些操作。

try:with open('man.txt', 'w') as man:print('this is man', file=man)with open('other.txt', 'a') as other:print('this is other', file=other)except IOError:print('file does not exist')

通過使用with和as關鍵字,我們就不需要手動地去關閉開啟檔案了(Python會自動地關閉檔案,即使發生了異常)。在Python中,這種技術叫做context management protocol

上例還可以寫成

try:with open('man.txt', 'w') as man, open('other.txt', 'a') as other:print('this is man', file=man)print('this is other', file=other)except IOError:print('file does not exist')



11、使用pickle來儲存和讀取資料

pickle是Python的標準庫,可以用於儲存和讀取任意格式的資料,類似於Java中的序列化機制。

import pickle  # 必須匯入pickle模組with open('man.txt', 'wb') as man:  # 必須以二進位模式開啟檔案pickle.dump([1, 2, 3, ['A', 'B', 'C']], man)with open('man.txt', 'rb') as man:A = pickle.load(man)print(A)

運行結果為

[1, 2, 3, ['A', 'B', 'C']]




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.