Bigger-Mai 養成計劃,Python基礎鞏固二

模塊初識
1.標準庫
2.第三方庫
import sysjava

sys.path #本身的本文件名不可爲sys.py
#輸出模塊存儲的環境變量
sys.argv #打印腳本的相對路徑
sys.argv[2] #取第二個參數python

import os#與系統交互的模塊git

os.system("dir")#windows下打印路徑下文件
#直接輸出到屏幕,不保存結果,返回值爲0.表示執行成功windows

os.popen("dir").read()#不read()不保存結果,保存地址。
os.mkdir("new_dir")#執行新建文件夾的命令api

我的自建模塊導入:(1)copy到site-package下
         (2)在環境變量中添加新建模塊的路徑緩存

pyc是什麼,python會不會編譯,是否是一個純粹的解釋型語言
編譯型語音:先經過編譯器對程序執行一個編譯的過程,把程序轉變爲機器語言,運行是不須要翻譯,直接執行。最典型的就是C語言
解釋型語言:沒有編譯的過程,而是在運行的時候經過解釋器逐行解釋,而後直接運行,最典型的就是Ruby。
解釋型和編譯型的優缺點:編譯型語言以前就編譯好了,因此效率比較高。
有一些解釋型語言經過解釋器的優化,而在效率上超過編譯型語言
因此不能純粹的分爲編譯型和解釋型
java是經過編譯器編譯成字節碼文件,而後運行時經過解釋器解釋成機器文件,因此Java是先編譯後解釋的文件。app

簡述python的運行過程
在說這個問題以前,咱們先來講兩個概念,PyCodeObject和pyc文件。
咱們在硬盤上看到的pyc天然沒必要多說,而其實PyCodeObject則是Python編譯器真正編譯成的結果。咱們先簡單知道就能夠了,繼續向下看。
當python程序運行時,編譯的結果則是保存在位於內存中的PyCodeObject中,當Python程序運行結束時,Python解釋器則將PyCodeObject寫回到pyc文件中。
當python程序第二次運行時,首先程序會在硬盤中尋找pyc文件,若是找到,則直接載入,不然就重複上面的過程。
因此咱們應該這樣來定位PyCodeObject和pyc文件,咱們說pyc文件實際上是PyCodeObject的一種持久化保存方式。ide

咱們能夠從中學到什麼?優化

A. 其實Python是否保存成pyc文件和咱們在設計緩存系統時是同樣的,咱們能夠仔細想一想,到底什麼是值得扔在緩存裏的,什麼是不值得扔在緩存裏的。
B. 在跑一個耗時的Python腳本時,咱們如何可以稍微壓榨一些程序的運行時間,就是將模塊從主模塊分開。(雖然每每這都不是瓶頸)
C. 在設計一個軟件系統時,重用和非重用的東西是否是也應該分開來對待,這是軟件設計原則的重要部分。
D. 在設計緩存系統(或者其餘系統)時,咱們如何來避免程序的過時,其實Python的解釋器也爲咱們提供了一個特別常見並且有效的解決方案。編碼

基礎入門拾遺
1、三元運算
result = 值1 if 條件 else 值2
若是條件爲真:result = 值1
若是條件爲假:result = 值2

數據類型
1、bytes
文本都是Unicode,二進制數據都是bytes,python3中數據傳輸都是二進制
>>'&12'.encode('utf-8')#字符串解碼成二進制utf-8
>>b'\xe2\x82\xac20'
>>b'\xe2\x82\xac20'.decode('utf-8')#二進制編碼爲字符串編碼
>>'&12'

2、list
切片
list['0','1','2','3']
list[:1] = ['0']
list[-3:-1] = ['1','2']#負數從左往右數
增刪改
list.append('4')#增長到最後
list.insert(1,'insert')#插入到1前面
list.remove('1')
del list[1]
list.pop()#刪除最後一個,並返回最後一個的值
list[list.index("1")]#尋找1的位置,並取值
list.count("1")#統計列表中有幾個1
list.clear()#清空列表
list.reverse() #反轉列表
list.sort()#排序,按ASCII排序
list.extend(list2)#擴展合併兩個列表

list2 = list.copy()#重點講解
print(list)#['0','1','2','3']
print(list2)#['0','1','2','3']
list[1] = 'nwa_1'
print(list)#['0','new_1','2','3']
print(list2)#['0','1','2','3']
list = ['0','1','2',['a','b','c'],'3']
list2.copy()
list = ['0','1','new_2',['new_a','b','c'],'3']
print(list)#['0','1','new_2',['new_a','b','c'],'3']
print(list2)#['0','1','2',['new_a','b','c'],'3']
list.deepcopy(list2)#深度copy 這樣就複製成徹底獨立的兩份了
第一種淺copy:list1 = copy.copy(list)
第二種淺copy:list1 = list[:]
第三種淺copy:list1 = list(list)

元組一旦建立不可修改,至關於一個只讀的列表,它的方法只有兩個count(),index()

字符串操做
name = 'maiwenao'
name.capitalize() #首字母大寫
name.count(sub,start,end)#統計從哪到哪有多少個sub
name.center(50,'-')#須要打印50個字符,name放中間,不夠‘-’來補
name.encode()#字符串轉化成二進制
name.endswith()#字符串以什麼結尾,好比判斷郵件地址結尾是否是.com
name.expandtans(tabsize=30)#轉化出多少個空格
name[name.find("m")]#查找'm'在字符串中的位置
name.format()#格式化對應
name.index()#位置
name.isalnum()#判斷是否是阿拉伯數字+字母
name.isalpha()#判斷是否是純英文字符
name.isdecimal()#判斷是否是十進制
name.isdigit()#判斷是否是一個整數
name.isidentifier()#判斷是否是一個合法的標識符
name.islower()#判斷是否是小寫
name.isnumber() #判斷是否是數字
name.isspease()#判斷是否是空格
name.istitle()#判斷是否是首字母大寫
name.printable()#判斷是否是能夠輸出的
name.isupper()#判斷是否是大寫
name.join(['+','1','2','3','4','5'])#print(1+2+3+4+5)
name.ljust(50,'*')#長度50,不過*補在右邊
name.rjust(50,'*')#與上面相反
name.lower()#大寫變成小寫
name.upper()#小寫邊大寫
name.lstrip()#去除右邊的空格回車
name.rstrip()#與上面相反
name.strip()#左右都去除
p = str.maketrans('asdfgh','123456')
print("mwaaaa".translate(p))#根據上面自定義規則一一對應替換,可用於加密
name.replace(old,new,count)#replace() 方法把字符串中的 old(舊字符串) 替換成 new(新字符串),若是指定第三個參數max,則替換不超過 max 次。
name.rfind()#尋找最右邊的那個字符
name.lfind()#與上面相反
print(1+2+3+4,stlit('+'))#['1','2','3','4']
name.swapcase()#全部字母大小寫反轉
name.zfill()

字典操做方法
dicts["key"] = "value"
#del
del dicts[key]
dicts.pop(key)
dicts.popitem()#隨機刪除
#find
key in dicts #返回true or false
dicts.get(key)#return value
dicts[key]#這樣查找若是爲空會報錯,get不會報錯,不存在只會返回none
dicts.update(dicts2)#至關於合併兩個字典
dicts.items()#字典轉成元組
d = dict.fromkeys([1,2,3],'key1','key2','key3')#經過一個列表生成默認dict
for i in dicts:
key = i
dicts[i]

for k,v in dicts.item(): print(k,v)#數據量大的話效率就很低

相關文章
相關標籤/搜索