開始學習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值相同 還是緩沖優化?)