python基礎

Updated March 29, 2018

官網:https://www.python.org/
pypi倉庫: https://pypi.org/
程序語言排行榜:https://www.tiobe.com/tiobe-index/
pep8編碼規(guī)范: https://www.python.org/dev/peps/pep-0008/


image

pycharm使用教程

官網:http://www.jetbrains.com/pycharm/
快捷鍵設置

[File]  [Settings]  搜索keymap  將Default改為Eclipse

ctrl+d  刪除當前行
ctrl+/  注釋/取消注釋
ctrl+z  取消上一步操作
ctrl+alt+l  自動將代碼格式化

shift+tab  取消縮進
shift+enter  跳到下一行

自定義快捷鍵
[File]  [Settings]  keymap  搜索點擊increase font size 

更換python解釋器
File Settings 搜索interpreter

自定義python模板文件
File Settings Editor File and Code Templates

設置文件編碼
File Settings Editor File Encoding

設置制表符為縮進符
File Default Settings Editor Code Style Python 勾選use tab character

關閉單詞拼寫檢查
File Settings Code Style Inspections Spelling 不勾選Typo

設置最大行寬
File Settings Code Style Hard wrap at 72 columns

python解釋器

CPython寇蚊,官方解釋器队他,用C語言開發(fā)
IPython暴心,基于CPython的交互式解釋器
PyPy珠增,采用JIT技術,對Python代碼進行動態(tài)編譯葬馋,可以顯著提高Python代碼的執(zhí)行速度
JPython卖鲤,運行在java平臺上的Python解釋器

python字節(jié)碼

pyc文件是在程序運行時由python的虛擬機來執(zhí)行的字節(jié)碼指令.
python將源代碼編譯為一組虛擬機指令, python解釋器就是該虛擬機的一個具體體現(xiàn). 這種跑在虛擬機內部的中間格式被稱為字節(jié)碼.

數(shù)據(jù)類型

可變數(shù)據(jù)類型

列表

list1=["this",2,3,4]
list2=["a","b","c","d"]

list1.insert(1,1)
list1.append(5)

快速合并兩個列表
list1.extend(list2)
list3 = [*list1, *list2]

刪除
list1.remove("this")
list2.pop(2)
del list1

list1.index("this")

list1[2]="2"
list1[:]=list2
list1[1:-1:1]=list2

排序
list1.sort()  元素按照大小排序, 等價于sorted(list1)
sorted(list1, key=(lambda x: abs(x)))  元素按照絕對值大小排序

list1.count("this")

列表生成式
[x*x for x in range(100)]

切片
[0:-1:2]

li=[11,22,33,44,55,66]
for i in li:
    if i ==33 or i==44:
        li.remove(i)
print(li)

集合

set1={1,2,3,4}  去重
set2={3,4,5,6}

set1.add(5)
set1.remove(3)

set3=set1&set2
set3=set1|set2

字典

dict1={'name':'alex','age':12,'sex':'male'}

del dict1['name']
del dict1

dict1.get('name','wrong')  找鍵名對應的值,找不到就返回第二參數(shù)
dict1.setdefault('name','lema')  查找該鍵畴嘶,找不到則插入該鍵值對

快速合并兩個字典
dict1.update(dict2)  將dict2插入dict1中
dict3 = {**dict1, **dict2}

dict1.items()  列表形式返回
dict1.keys()
dict1.values()

不可變數(shù)據(jù)類型

元組

tup1=("this",,2,3,4)

del tup1

a=[1,2,3]
b=[1,2,3]
c=(a,b)
a.append(4)
print(c)

數(shù)字, 字符串

str1='abcdefg'
str2='h|i|j|k|l'

str1.capitalize()
str1.upper()
str1.lower()

str1.find(str2,2,5) # 在str1中從序號2位置開始找str2扫尖,直到序號5位置結束查找

str1.center(20,'*')

str1.startswith('ab')
str1.endswith('ef')

'-'.join(['2018','1','1'])
str2.split("|",3)

str1.replace('a','A',1)

str1.strip()

連接字符串時可用join, 也可以用+, 那這兩種方法在性能上有什么區(qū)別呢?


image

字符串屬于不可變數(shù)據(jù)類型, 當用操作符+連接字符串時, 每執(zhí)行一次+都會申請一塊新的內存, 然后復制上一個+操作的結果和本次操作到這塊內存空間, 因此用+連接字符串時會涉及多次內存申請與復制.
而join在連接字符串的時候, 會先計算需要多大的內存存放結果, 然后一次性申請所需內存并將字符串復制過去, 所以join性能優(yōu)于+

可迭代對象

可以直接作用于for循環(huán)的對象統(tǒng)稱為可迭代對象(Iterable).

可以被next()函數(shù)調用并不斷返回下一個值的對象稱為迭代器(Iterator).

所有的Iterable均可以通過內置函數(shù)iter()來轉變?yōu)镮terator.

g=(x*x for x in range(1000))
next(g)
for _ in g:
    print(_)

通過列表生成式我們可以直接創(chuàng)建一個列表, 但是如果創(chuàng)建一個包含100萬個元素的列表, 會占用很大的存儲空間.
生成器可以按照某種算法把列表元素推算出來, 在循環(huán)過程中不斷推算出后續(xù)的元素, 不必創(chuàng)建完整的列表, 從而節(jié)省大量的空間.
生成器其實是一種特殊的迭代器, 只需要一個yield關鍵字

def func():
    print('step 1')
    yield 1
    print('step 2')
    yield 2
    print('step 3')
    yield(3)
f=func()
next(f)
for _ in f:
    print(_)

文件操作

r 只讀模式
w 新建或覆蓋源文件模式
a 追加模式
r+ 讀寫模式
b

with open('test.txt','rb+',encoding='utf-8') as f:

    f.write()
    f.writelines()
    for line in f:
        pass

    f.read(10)   一次性讀取當前光標后的10個字符
    f.tell()   獲取當前光標
    f.seek(0)  光標回到最開始的地方

異常處理

python內置多種異常, 同時也可以創(chuàng)建自定義異常
當某種條件滿足時, 我們可以使用raise來拋出異常, 實現(xiàn)自定義異常

a = 10
if a>5:
    raise Exception('error')

try塊中的代碼只要遇到異常就會停止,
except塊的代碼如果沒有執(zhí)行, 就會執(zhí)行else塊中的代碼
finally塊中的代碼一定會執(zhí)行
try塊和except塊中執(zhí)行continue, break或return語句之前, finally語句會先執(zhí)行
不推薦在finally塊中使用return語句

try:
    pass
except IndexError as e:
    pass
except Exception as e:
    print("未知錯誤")
else:
    try:
        pass
    except:
        pass
finally:
    print("不管結果,照常執(zhí)行")

traceback模塊
使用traceback模塊可以直觀地進行調試, 可以看到是哪個函數(shù)哪一行出現(xiàn)錯誤

import traceback


try:
    pass
except Exception as e:
    traceback.print_exc()

python中下劃線的用法

單下劃線
單下劃線用來表示某個臨時變量

單前綴下劃線
以單個下劃線開頭的變量或方法僅供內部訪問, 而這僅僅只是一個約定
如果使用通配符從模塊中導入所有名稱, 則python不會導入帶有單前導下劃線的名稱

單末尾下劃線
單末尾下劃線用來避免與關鍵字發(fā)生命名沖突, 這也是一個約定

雙前綴下劃線
雙前綴下劃線會導致python解釋器重寫名稱.
解釋器更改變量的名稱, 以便在類被擴展的時候不容易產生命名沖突

雙前綴末尾下劃線
表示特殊函數(shù), 特殊變量

軟件目錄結構規(guī)范

Foo

    bin                   存放一些項目的可執(zhí)行文件
        一鍵啟動.py
    
    core                  存放項目的所有源代碼
        tests             存放單元測試代碼
            __init__.py
            test_main.py
        __init__.py
        main.py
    
    docs                   存放一些文檔
        conf.py
        abc.rst
    
    setup.py               安裝掠廓,部署,打包的腳本
    
    requirements.txt       存放軟件依賴的外部python包列表
    
    README                項目說明文件
        1.軟件定位甩恼,軟件的基本功能
        2.運行代碼的方法蟀瞧,安裝環(huán)境,啟動命令等
        3.簡要的使用說明
        4.代碼目錄結構說明
        5.常見問題說明

virtualenv

virtualenv用來為每一個應用創(chuàng)建一個隔離的python運行環(huán)境, 解決不同應用間版本沖突的問題

pip install virtualenv

mkdir myblog
cd ./myblog

virtualenv --no-site-packages blogvenv

cd ./blogvenv/Scripts
activate  進入環(huán)境
deactivate  退出環(huán)境
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末条摸,一起剝皮案震驚了整個濱河市悦污,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钉蒲,老刑警劉巖切端,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異顷啼,居然都是意外死亡踏枣,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門钙蒙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茵瀑,“玉大人,你說我怎么就攤上這事躬厌÷碜颍” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵扛施,是天一觀的道長鸿捧。 經常有香客問我,道長疙渣,這世上最難降的妖魔是什么匙奴? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮昌阿,結果婚禮上饥脑,老公的妹妹穿的比我還像新娘恳邀。我一直安慰自己,他們只是感情好灶轰,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布谣沸。 她就那樣靜靜地躺著,像睡著了一般笋颤。 火紅的嫁衣襯著肌膚如雪乳附。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天伴澄,我揣著相機與錄音赋除,去河邊找鬼。 笑死非凌,一個胖子當著我的面吹牛举农,可吹牛的內容都是我干的。 我是一名探鬼主播敞嗡,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼颁糟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了喉悴?” 一聲冷哼從身側響起棱貌,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎箕肃,沒想到半個月后婚脱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡勺像,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年障贸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吟宦。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡惹想,死狀恐怖,靈堂內的尸體忽然破棺而出督函,到底是詐尸還是另有隱情嘀粱,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布辰狡,位于F島的核電站锋叨,受9級特大地震影響,放射性物質發(fā)生泄漏宛篇。R本人自食惡果不足惜娃磺,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望叫倍。 院中可真熱鬧偷卧,春花似錦豺瘤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晌梨,卻和暖如春桥嗤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仔蝌。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工泛领, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人敛惊。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓渊鞋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瞧挤。 傳聞我的和親對象是個殘疾皇子篓像,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容

  • 〇、前言 本文共108張圖皿伺,流量黨請慎重! 歷時1個半月盒粮,我把自己學習Python基礎知識的框架詳細梳理了一遍鸵鸥。 ...
    Raxxie閱讀 18,922評論 17 410
  • 本節(jié)內容 Python介紹 發(fā)展史 Python 2 or 3? 安裝 Hello World程序 變量 用戶輸入...
    小小不懂11閱讀 3,406評論 2 30
  • Python 基礎教程 實例(Python 2.0+) 實例(Python 3.0+) Python 簡介 Pyt...
    縱我不往矣閱讀 64,722評論 0 23
  • 顧往昔,石砂間丹皱,磊石為城妒穴,門閉城隱。 千秋雪摊崭,睦風夏讼油,冬暮春綠,來之去之呢簸。 窗框黃矮台,帳簾破,門椅破朽根时,蛛絲藏思瘦赫。
    飛魚不飛閱讀 271評論 0 7
  • 下課返回辦公室确虱,一眼看見一本《中華校園》擺在桌面上,封面人物是咱們的韓局長替裆。西裝革履校辩,戴著一副眼鏡窘问,手握鉛筆,總是...
    青山綠水一釣叟閱讀 288評論 0 10