標籤:python
心靈雞湯:
1,今天的苦逼是為了不這樣一直苦逼下去!
2,今天之所以苦逼,是因為之前不夠努力!
3,今天的你,是由幾年前的你決定的!
4,Be a loser for now,or forever!(一時的屌絲or永遠的屌絲)
5,不要和傻逼去講道理,傻逼會把你拉到和他一個水平上,然後用他的經驗把你來打敗,來說服。
############################
########### python特性 #################
python優點:
簡單、優雅、明確
強大的模組(第三方庫)-----SMTP、數學運算、爬蟲、伺服器編程、web開發
易移植
物件導向
可擴充(可以和別的語言結合,稱作膠水語言)
缺點:
代碼不能加密
速度慢(看應用場合,0.1s和0.0001s人是無法感覺,沒有任何區別的)
用python做什嗎?
--軟體開發
遊戲後台、搜尋、圖形介面
網站
C\S軟體
科學運算
--系統管理
指令碼
IT自動化工具
C\C++,Java(可以在windows和linux跨平台開發),Python,PHP(web開發語言),Ruby,Go(google的語言,docker使用go語言開發的)
動態語言:Python、PHP、Ruby
靜態語言:C\C++,Java,go
靜態語言在執行之前需要進行一次編譯,即把明文代碼轉換成CPU可以直接執行的機器指令(直接和CPU打交道,所以速度非常快)
動態語言是解釋性語言,即邊執行邊解釋(先轉化一點成為CPU可以直接執行的機器指令,執行一點,然後再轉換,然後在執行...),所以比一次性編譯的過程要稍微慢一點。
python 版本
python2.6相容python2.4,同時也相容python3.0的一些特性。python2.7是在2.X當中的最後一個版本,之後就是3.0版本了
第三方的python開發環境如:PythonXY,portable python(免安裝版,隨身碟拷貝過去可以直接使用)
查看版本:python -V
>>> print ‘Hello world!‘----python 2.X文法
Hello world!
>>> print (‘Hello world!‘)-----python 3.X文法
Hello world!
所有的python指令碼都是以.py結尾
#!/usr/bin/env python --------告訴系統用什麼語言來執行本指令碼
python解譯器
作用:執行python指令碼的時候,解譯器把編寫的明文代碼轉換成機器CPU可以識別的機器碼,機器碼並不是真正的二進位指令,而是介於人可讀的編碼和真正的二進位指令之間的一種編碼。python是動態語言,所以是邊執行,邊解釋。
-Cpython 官方標準
-Ipython 是一個python的互動式shell,比預設的python shell好用很多,支援變數自動補全、自動縮排、支援bash shell命令,內建許多很有用的功能和函數。可以理解為在Cpython的基礎上做一些修飾,但實際執行的時候還是調用Cpython。
-Jython 是一種完整的語言,而不是一個java翻譯器或僅僅是一個python編譯器,它是一個python語言在java中的完全實現(用java完全把python重寫了一遍,解譯器也成了java寫的解譯器,不是C的解譯器)。Jython也有很多從Cython中繼承的模組庫。最有趣的事情是Jython不像Cpython或者其他進階語言,它提供了對其實現語言的一切存取---所以Jython不僅給你提供了python的庫,同時也提供了所有的java類,這使其有一個巨大的資產庫。
-IronPython 和Jython差不多,只不過是用.net寫的一種解譯器
-PYPY 是用python寫的解譯器(據說,速度比Cpython快6倍,速度快是因為:動態編譯(just in time),執行之前,把代碼中的類和函數先編譯好,所以執行的時候會更快一下【瞭解即可】。簡單理解:中文一句一句翻譯告訴對方,變成中文十句十句翻譯告訴對方)
########## 編程風格要求 ##################
-縮排統一
不處於同一層級的代碼就必須加縮排!同一層級的代碼縮排必須保持一致!
在python中定義的函數預設不會執行,只有在合適的地方調用後才會執行。
定義了函數,即使不調用也會對其做語法檢查。在cpu執行之前python會一個個的把函數傳遞給解譯器編程CPU可執行檔指令,所以在CPU執行之前,為了避免崩潰,會瀏覽整個代碼檢查語法錯誤,縮排錯誤,變數定義錯誤等
-變數(即標識符)
一般全部大寫的變數名來表示常量(常量是不能變的量,但如果你一定要改變常量的值,也沒人能攔得住你,只是習慣而已),小寫字母來表示變數,例如:
PAI=3.1415926
x=2
標識符的第一個字元必須是字母表中的字母(大寫或小寫)或者一個底線(‘_‘),即不能以數字開頭。
標識符名稱的其他部分可以由字母(大寫或小寫),數字(0-9),底線(_)組成。
標識符名稱是對大小寫敏感的。例如,myname和myName不是一個標示符。
有效 標識符的例子有i、__my_name、name_23和alb2_c3。
無效 標識符的例子有2things、this is spaced out、my-name。
備忘:變數名一般使用名詞而不要使用動詞,如果是兩個名詞的組合,可以採用如下例子的方式:
taskdetail(不推薦)
task_detail(ok)
TaskDetail(ok)
taskDetail(ok 駝峰狀)
eg:
[[email protected] robin]# cat hello.py
#!/usr/bin/env python
# -- coding:utf-8 --#
def main():
print ‘hello‘
main()
[[email protected] robin]# python hello.py
hello
縮排處理後如下:
[[email protected] robin]# cat hello.py
#!/usr/bin/env python
# -- coding:utf-8 --#
def main():
print ‘hello‘
main()
[[email protected] robin]# python hello.py
File "hello.py", line 4
print ‘hello‘
^
IndentationError: expected an indented block
備忘:Indentation 就是縮排的意思
[[email protected] robin]# cat hello.py
#!/usr/bin/env python
# -- coding:utf-8 --#
def main():
print ‘hello‘
print ‘==‘ #把這行和def的縮排即使相同也會報錯。這種不是嵌套的情況必須是相同且是頂頭才可以!
main()
[[email protected] robin]# python hello.py
File "hello.py", line 3
def main():
^
IndentationError: unexpected indent
備忘:不處於同一層級的代碼就必須加縮排!同一層級的代碼縮排必須保持一致,否則報錯如上!
關於python中變數指向的一個圖解:
650) this.width=650;" id="image_operate_47221428724070141" src="http://s16.sinaimg.cn/mw690/005XFiLizy6Rpln9yUf6f&690" alt="005XFiLizy6Rpln9yUf6f&690" height="536" width="552" />
#######python的資料類型##########
1,按特徵劃分:
數字類型:
整型:布爾型(True|False)、長整型(L)、標準整型
備忘:python中當存放的資料比較大時,會自動轉換成長整型(L)
eg:1
>>> a=2**5
>>> a
32
>>> type(a)
<type ‘int‘>
>>> a=2**100
>>> a
1267650600228229401496703205376L
>>> type(a)
<type ‘long‘>
非整型:雙精確度浮點型、複數、decimal(不是內建類型)
序列類型:字串(str)、元組(tuple)、列表(list)
eg1:
>>> name=‘alex‘
>>> type(name)
<type ‘str‘>
>>> if type(name) is str:print ‘ddd‘----通過type內建函數判斷變數類型
...
ddd
eg2:
>>> name_list = [‘alex‘,‘robin‘,‘rock‘]
>>> type(name_list)
<type ‘list‘>
映像類型:字典(dict)
eg1:
>>> name={‘alex‘:[30,‘IT‘]}
>>> name[‘alex‘]
[30, ‘IT‘]
>>> type(name)
<type ‘dict‘>
集合類型:可變集合(set)、不可變集合(frozenset)
2,按可變性劃分:
可雜湊的,不可變資料類型:數字類型、字串(str)、元組(tuple)、不可變集合(frozenset)
可變資料類型:字典(dict)、列表(list)、可變集合(set)
#########運算###################
>>> 1+1*3/2
2
>>> 1+1*3.0/2
2.5
>>> (1+1)*3.0/2
3.0
>>> 2**32
4294967296
>>> A=14
>>> B=12
>>> A>B
True
>>> A<=B
False
>>> A!=B
True
更多python運算,請參考:http://www.w3cschool.cc/python/python-operators.html
視頻:30:51
第一節 python基礎