天天看點

PYTHON第一課

開始學習PYTHON,堅持下去!

python是用C語言開發的編譯性語言,運作時先被cpython jython ironpython等編譯成位元組碼,然後再在對應的虛拟機裡轉換成機器碼運作

#!/usr/bin/env python  在linux中聲明使用python解析

#_*_ coding:utf-8 _*_   或  coding:utf-8       檔案以UTF-8編碼,如不加,會以ASCII碼儲存,如有中文會有亂碼

import  sys 導入sys子產品   子產品分為 系統   第三方 與自定義三種,如需調用外部子產品使用import

import getpass   導入getpass子產品,其中有個用法getpass.getpass() 使用者輸入但不顯示在螢幕上,可用來輸入密碼

特殊的字元串變量 name1的值賦給name2後,當name1再指派後,name2的值仍指向name1之前的字元串    --字元串一旦修改,就需要在記憶體中重新配置設定空間存放新的字元串,并将指針指向新的位址,盡量不要用加号處理字元串,會導緻頻繁的重新配置設定空間    (針對這點,PYTHON的緩沖池會有一定的優化)

循環控制

   if xxx:

      xxx

   elif xxx:

      xxx

   elif xxx:

   else:

變量類型

1.單值

    數字  --整型  長整型  浮點型 複數

    布爾值  True  False

    字元串  

        格式化  name = 'he is %s,now is %d' %('alex',30)

                name = 'he is {0},now is {1},{2}' 

        長度  len()

        去除空格  name.strip()  還可以去除換最後的換行符  lstrip() rstrip()

        索引   []      切片[:]   

        分割  name.split()  預設以空格分隔生成清單,如果沒有空格則直接生成隻有一個元素的清單  與join功能一起可以實作某些字元替換功能,或者去除全部空格

        包含  in  可用來判斷是否存在(if),也可以用來循環 (for)

2.集合

    清單 list []

        索引[]   切片[:]

        增append    删 del(不加[]會直接删除變量)    改 直接=指派

        合并   ' '.join() 

        包含   in

        循環 

    元組 tuple()  與清單類似,但不可修改,其它的操作與清單相同

    字典 dis {}  是key-value對,讀取是無序的

        person = {"name":"han","age":37,"gender":"male","job":"programmer" }

        print person["name"]  --han

        print person.keys()   --傳回key清單

        print person.values()  --傳回value清單

        print person.items()  -- 傳回鍵值對的清單,每個元素是tuple

        for k,v in person.items():

            print k,v

循環    

        for ele in str or list or tuple or dict:

            xxx

            break(跳出循環)/continue(跳出本次循環,繼續下一次)/pass(什麼都不幹)

        while xxx:

檔案操作

        打開   file_obj = file("檔案路徑","打開模式")   r w a w+

        讀  

            file_obj.read() 将全部内容讀入記憶體

            file_obj.readline()  将全部内容讀入記憶體,交以行分隔生成清單,每項後面帶換行符

            for line in file_obj:  一行一行讀入記憶體

        寫

            file_obj.write()

            file_obj.writeline()

        關閉  file_obj.close()

其它  

        type()  用來判斷變量類型,要與 is 配合使用而不是==  if type('han') is str

        id()    變量記憶體位址

問題1: 使用in來查找與使用for循環來查找的原理是否相同(str,list,dict),速度比較

補充:

        字典的删除  del(person['name']) 

                        或 person.pop('name')  與清單不同,清單的pop()可以有預設值,但字典不可以

        字典值的擷取  get() 

                            person.get('name')     person.get('age',38)  如果age有值就擷取,如果沒有就取38

        字典的更新 update()

                            person.update(person1) 用person1去更新person,如果person裡不存在就添加,如果存在就更新  相當于 merge

        淺copy與深copy   隻有字典有copy,清單與字典都有deepcopy

                 dict2 = dict1.copy()   隻是複制指向,兩個dict指向相同,即id值 相同

                 dict2 = copy.deepcopy(dict1) --注意寫法 深複制,指向不同,即id值 不同

        ---問題: 字元也有deepcopy,但這個是不是重新配置設定空間? (id值相同   還是緩沖優化?)

上一篇: JVM 參數設定
下一篇: MySQL第一課