Python概述
Python創始人是吉多.範羅蘇姆。在1989年萬聖節期間為打發時間而開發的。
目前Python在TIOBE排行榜第五位置

Python可以應用在衆多的領域中:
資料分析、組建內建、網絡服務、圖像處理、數值計算和科學計算等領域。
Python應用的知名公司有:
Youtube、Dropbox、BT、知乎、豆瓣、谷歌、百度、騰訊、
汽車之家等。
Python可以做的工作有:
自動化運維、自動化測試、大資料分析、爬蟲、Web等
Python與其他語言的異同:
python是由C語言來發而來的。
代碼的執行:
C語言:代碼編譯===》機器碼===》執行
其他語言:代碼編譯===》位元組碼===》機器碼===》執行
python也是這樣,在位元組碼===》機器碼的過程會生成一個.pyc的檔案,這個檔案就是機器碼的檔案。
注視:python在執行過程中會先找有沒有.pyc檔案,然後與原py檔案進行對比,如果沒有變化,則直接執行.pyc檔案;如果.py檔案較新,則重新生産.pyc檔案。然後執行。
代碼執行速度
由上面代碼的執行順序,也可以看出,python的運作速度相比較C會慢。
内置模版庫
Python内部會自帶很多的模版庫,可以直接調用。可以滿足大多數的基本的需求。
Python的種類
Cpython
官方的版本。使用C語言實作,使用最為廣泛。CPython實作會将源檔案(py檔案)轉換成位元組碼檔案(pyc檔案),然後運作在Python虛拟機上。
Jyhton
Python的Java實作,Jython會将Python代碼動态編譯成Java位元組碼,然後在JVM上運作。
IronPython
Python的C#實作,IronPython将Python代碼編譯成C#位元組碼,然後在CLR上運作。
PyPy
Python實作的Python,将Python的位元組碼位元組碼再編譯成機器碼。它在Python的基礎上對Python的位元組碼進一步處理,提升了執行速度。
Python環境
推薦使用2.7版本的
Windows:
1:下載下傳安裝包
<a href="https://www.python.org/ftp/python/2.7.10/python-2.7.10.msi">https://www.python.org/ftp/python/2.7.10/python-2.7.10.msi</a>
2:直接安裝
預設的安裝路徑是:C:\Python27
3:配置環境變量
【右鍵計算機】--》【屬性】--》【進階系統設定】--》【進階】--》【環境變量】--》【在第二個内容框中找到 變量名為Path 的一行,輕按兩下】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】
例如:;C:\Python27 在最後面添加即可。
Linux:
1:linux都自帶Python環境。推薦使用ubuntu。因為其自帶比較新的版本。
Python入門
一:你好世界
建立hello.py
View Code
二:python程式的執行過程
三:編碼格式
ASCII:美國标準資訊交換代碼是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言,其最多隻能用 8 位來表示(一個位元組),即:2**8 = 256,是以,ASCII碼最多隻能表示 256 個符号。
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字元編碼。Unicode 是為了解決傳統的字元編碼方案的局限而産生的,它為每種語言中的每個字元設定了統一并且唯一的二進制編碼,規定雖有的字元和符号最少由 16 位來表示(2個位元組),即:2 **16 = 65536,
注:此處說的的是最少2個位元組,可能更多。
UTF-8,是對Unicode編碼的壓縮和優化,他不再使用最少使用2個位元組,而是将所有的字元和符号進行分類:ascii碼中的内容用1個位元組儲存、歐洲的字元用2個位元組儲存,東亞的字元用3個位元組儲存。
是以,python解釋器在加載 .py 檔案中的代碼時,會對内容進行編碼(預設ascill)。但是3.0以後的版本預設是UTF-8。
四:注釋的方式
單行注釋:#
多行注釋:"""注釋的内容"""或者是三個單引号
五:傳參
上面已經說了,Python有大量的子產品,進而使得開發很簡潔,類庫主要包含三種:
1:Python内部提供的子產品
2:業内開源的子產品
3:程式員自己開發的子產品
Python内部提供一個sys的子產品,其中的sys.argv就是用來捕獲執行python腳本時傳入的參數。
六:變量
1:聲明變量
變量的名:name 變量的值:"曹小賤"
變量的作用:昵稱,代指記憶體裡某個位址中儲存的内容。
變量定義的規則:
1:變量名隻能是字母、數字或下劃線的任意組合。
2:變量名不能以數字開頭。
3:不能使用關鍵字進行聲明。
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
2:變量的指派
七:輸入
八:流程控制和縮進
需求一:使用者登入驗證
需求二:根據使用者輸入内容輸出其權限
注釋:外層變量可以被記憶體變量調用,反之不行。
九:Python的基本類型
1:數字
int(整型)
在32位機器上,整數的位數為32位,取值範圍為-2**31~2**31-1,即-2147483648~2147483647
在64位系統上,整數的位數為64位,取值範圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(長整型)
跟C語言不同,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上由于機器記憶體有限,我們使用的長整數數值不可能無限大。
注意,自從Python2.2起,如果整數發生溢出,Python會自動将整數資料轉換為長整數,是以如今在長整數資料後面不加字母L也不會導緻嚴重後果了。
float(浮點型)
浮點數用來處理實數,即帶有小數的數字。
complex(複數)
複數由實數部分和虛數部分組成,一般形式為x+yj,其中的x是複數的實數部分,y是複數的虛數部分,這裡的x和y都是實數。
注:Python中存在小數字池:-5 ~ 257
2:布爾值(bool)
True False
真或假
1 或0
3:字元串
"Hello World"
萬惡的字元串拼接:
python中的字元串在C語言中展現為是一個字元數組,每次建立字元串時候需要在記憶體中開辟一塊連續的空,并且一旦需要修改字元串的話,就需要再次開辟空間,萬惡的+号每出現一次就會在内從中重新開辟一塊空間。
字元串格式化
>>> name = "曹小賤"
>>> print "i am %s " % name
i am 曹小賤
注釋:字元串是%s;整數%d;浮點數%f
字元串的常用功能:
移除空白
strip
lstrip
rstrip
>>> name = " alex "
>>> import tab
>>> print name.strip()
alex
>>> print name.lstrip()
>>> print name.rstrip()
分割
>>> name = "a;b;c;d"
>>> name1 = name.split(';')
>>> name1
['a', 'b', 'c', 'd']
長度
>>> name
'a;b;c;d'
>>> len(name)
7
>>> name[len(name)-1]
'd'
索引
>>> name[1]
';'
>>> name[2]
'b'
切片
>>> name = "alexd"
>>> name[0]
'a'
>>> name[1:2]
'l'
>>> name[1:4]
'lex'
>>> name[3:4]
'x'
>>> name[-3:]
'exd'
>>> name[0:]
'alexd'
4:清單
建立(第一種方式最終要調用第二種方式)
>>> name = ['ccc','ggg','ttt']
['ccc', 'ggg', 'ttt']
>>> name = list(['ccc','ggg','ttt'])
'ggg'
>>> name[1:3]
['ggg', 'ttt']
追加
>>> name.append('sss')
['ccc', 'ggg', 'ttt', 'sss']
删除
>>> del name[2]
['ccc', 'ggg', 'sss']
3
循環
#!/usr/bin/env python
#coding:utf-8
name = ['ccc','ggg','ttt']
for i in name:
if i == "ccc":
print "找到了"
break
包含
>>> 'ccc' in name
True
>>> 'cgt' in name
False
5:元組(tuple)
建立元組
>>> name = ('ccc','ggg','ttt')
('ccc', 'ggg', 'ttt')
>>> name1 = tuple(('aaa','bbb','ccc'))
('aaa', 'bbb', 'ccc')
上面的name的方式最終還是要調用下面的方式。
>>> name1[2]
'ccc'
('ggg',)
解釋:顧頭不顧尾
name = ('aaa', 'bbb', 'ccc')
>>> 'bbb' in name1
>>> 'abc' in name1
6:字典(無序)
建立字典
>>> menu = {'name':'cgt','age':24,'job':'IT'}
>>> menu
{'job': 'IT', 'age': 24, 'name': 'cgt'}
>>> menu1 = {'name':'cgt1','age':2424,'job':'IT'}
>>> menu1
{'job': 'IT', 'age': 2424, 'name': 'cgt1'}
>>> menu[1] #字典是一種鍵值對的方式,不能使用下标來擷取,通過鍵值。原因是它是無序的
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 1
>>> menu['name']
'cgt'
新增
>>> menu['salary']=400000
{'job': 'IT', 'salary': 400000, 'age': 24, 'name': 'cgt'} #從這裡也可以展現出他的無序
修改
{'job': 'IT', 'salary': 400000, 'age': 24, 'name': 'cgt'}
>>> menu['salary']=1 #可以直接重新定義變量的值,進行修改
{'job': 'IT', 'salary': 1, 'age': 24, 'name': 'cgt'}
>>> del menu['salary']
#通過pop來删除鍵,它的不同之處是再删除的同時,顯示出值
>>> menu.pop('name')
{'job': 'IT', 'age': 24}
#清除所有的鍵
>>> menu1.clear()
{}
menu = {
'name':'曹小賤',
'age':24,
'job':'IT'
}
#開始周遊循環
for key in menu:
print key,'對應的值',menu[key]
結果: #這裡呈現的結果列印出來也是無序的
job 對應的值 IT
age 對應的值 24
name 對應的值 曹小賤
#####################################################
for key,value in menu.items():
print key,'對應的值',value
結果:
PS:循環,range,continue 和 break
range在什麼範圍内
continue跳出本次循環,繼續執行下次循環
break終止循環
len(menu)
十:運算
運算符
描述
執行個體
算術運算
+
兩個對象相加
10+19輸出結果29
_
得到負數;兩個對象相減
10-19輸出結果-9
*
兩個數相乘,
10*19輸出結果190
/
兩個數相除
10/2輸出結果5
%
取模-傳回除法的餘數
10%3輸出結果1
**
幂
2**2輸出結果4
//
取整除傳回商的整數部分
9//2輸出結果4
比較運算
==
等于
(a==b)傳回false
!=
不等于
(a != b)傳回true
<>
(a <> b)傳回false
>
大于
(a > b)傳回false
<
小于
(a < b)傳回true
>=
大于等于
(a >= b)傳回false
<=
小于等于
(a <= b)傳回true
指派運算
=
簡單的指派運算符
c = a + b将a+b的運算結果指派給c
+=
加法指派運算
c+=a等效于c=c+a
-=
減法指派運算
c-=a等效于c=c-a
/=
除法指派運算
c/=a等效于c=c/a
%=
取模指派運算
c%=a等效于c=c%a
*=
乘法指派運算
c*=a等效于c=c*a
**=
幂指派運算
c**=a等效于c=c**a
//=
取整指派運算
c//a等效于c=c//a
邏輯運算
and
布爾"與"如果x為False,x and y 傳回false,否則傳回y的值
(a and b)傳回true
or
布爾"或"如果x為True,,則傳回True。否則傳回y大的值
(a or b)傳回true
not
布爾"非",x為true,傳回false
not (a and b)傳回false
成員運算
in
如果在指定的序列内找到值,則傳回True.
x在y的序列中,傳回True
not in
如果在指定的序列内沒找到值,則傳回True.
x不在y的序列中,傳回True
身份運算
is
is 是判斷兩個辨別符是不是引用自一個對象
x is y,如果id(x)=id(y) is傳回結果1
is not
is not 是判斷兩個辨別符是不是引用來自不同的對象
x is not y 如果id(x)!=id(y)傳回結果1
位運算
&
按位與運算
(a&b)輸出結果12.二進制解釋:0000 1100
|
按位或運算
(a|b)輸出結果61二進制解釋:0011 1101
^
按位異或運算
(a^b)輸出結果49 二進制解釋:0011 0001
-
按位取反
(-a)輸出結果-61 二進制解釋:1100 0011
<<
左移動運算
a<<2輸出結果240二進制解釋:1111 0000
>>
右移動運算
a>>2輸出結果15二進制解釋:0000 1111
運算符優先級
指數(最高優先級)
~+-
按位翻轉,一進制加号和減号(最後兩個方法名為:+@和-@)
*/%//
乘除取模取整除
+ -
加法減法
左移右移
位 'AND'
^ |
<= <> >=s
比較運算符
<> == !=
等于運算符
= %= /= //= -= += *= **=
指派運算符
is is not
身份運算符
in not in
成員運算符
not or and
邏輯運算符
十一:對檔案的基本操作
file = file("檔案路徑名稱","模式")
f = file('檔案名','模式') 打開一個檔案,
f = open('檔案名','模式') 打開一個檔案,
f.read():是以字元串的形式讀取出來
f.readline():是以清單的形式
f.name擷取檔案的名字
f.realines():全部一次性讀取到記憶體中出來
f.xrealines():全部讀取到記憶體中出來,但是一行一行的讀取
f.flush():将記憶體中的内容刷到硬碟檔案中
f.close():關閉檔案.
f.write():寫入
f.seek(0): 回到檔案開頭
f.mode:檔案打開的模式,讀寫等
f.truncate():加數字 截取多少位元組
檔案打開的模式
w 以寫方式打開,
a 以追加模式打開 (從 EOF 開始, 必要時建立新檔案)
r+ 以讀寫模式打開(一般使用r+)
w+ 以讀寫模式打開 (參見 w )
a+ 以讀寫模式打開 (參見 a )
rb 以二進制讀模式打開
wb 以二進制寫模式打開 (參見 w )
ab 以二進制追加模式打開 (參見 a )
rb+ 以二進制讀寫模式打開 (參見 r+ )
wb+ 以二進制讀寫模式打開 (參見 w+ )
ab+ 以二進制讀寫模式打開 (參見 a+ )
***************當你發現自己的才華撐不起野心時,就請安靜下來學習吧***************
本文轉自散盡浮華部落格園部落格,原文連結:http://www.cnblogs.com/kevingrace/p/5569737.html,如需轉載請自行聯系原作者