全棧Python教程day1


 
Python在一些公司的應用: 
  • 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、Google廣告等項目都在大量使用Python開發
  • CIA: 美國中情局網站就是用Python開發的
  • NASA: 美國航天局(NASA)大量使用Python進行數據分析和運算
  • YouTube:世界上最大的視頻網站YouTube就是用Python開發的
  • Dropbox:美國最大的在線雲存儲網站,所有用Python實現,天天網站處理10億個文件的上傳和下載
  • Instagram:美國最大的圖片分享社交網站,天天超過3千萬張照片被分享,所有用python開發
  • Facebook:大量的基礎庫均經過Python實現的
  • Redhat: 世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的
  • 豆瓣: 公司幾乎全部的業務均是經過Python開發的
  • 知乎: 國內最大的問答社區,經過Python開發(國外Quora)
  • 春雨醫生:國內知名的在線醫療網站是用Python開發的
  • 除上面以外,還有搜狐、金山、騰訊、盛大、網易、百度、阿里、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各類各樣的任務。
  • 1989年,爲了打發聖誕節假期,Guido開始寫Python語言的編譯器。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他但願這個新的叫作Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。
  • 1991年,第一個Python編譯器誕生。它是用C語言實現的,並可以調用C語言的庫文件。從一出生,Python已經具備了:類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊爲基礎的拓展系統。
  • Granddaddy of Python web frameworks, Zope 1 was released in 1999
  • Python 2.0 - October 16, 2000,加入了內存回收機制,構成了如今Python語言框架的基礎
  • Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 誕生
  • Python 2.5 - September 19, 2006
  • Python 2.6 - October 1, 2008
  • Python 2.7 - July 3, 2010
  • In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible
  • Python 3.0 - December 3, 2008
  • Python 3.1 - June 27, 2009
  • Python 3.2 - February 20, 2011
  • Python 3.3 - September 29, 2012
  • Python 3.4 - March 16, 2014
  • Python 3.5 - September 13, 2015
windows
linux、Mac
  在linux 下建立一個文件叫hello.py,並輸入
而後執行命令:python hello.py ,輸出
指定解釋器
上一步中執行 python hello.py 時,明確的指出 hello.py 腳本由 python 解釋器來執行。
若是想要相似於執行shell腳本同樣執行python腳本,例:  ./hello.py  ,那麼就須要在 hello.py 文件的頭部指定解釋器,以下:
如此一來,執行: . /hello.py  便可。
ps:執行前需給予 hello.py 執行權限,chmod 755 hello.py
在交互器中執行 
除了把程序寫在文件裏,還能夠直接調用python自帶的交互器運行代碼, 
name = "lv"
name2 = name
print ( "My name is " , name ,name2)
name = "shihai"
print ( "My name is " , name ,name2)

python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill)
ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256-1,因此,ASCII碼最多隻能表示 255 個符號。
 
  
 
 
 
1、Python介紹
python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。
Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域。目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。
 
目前Python主要應用領域:
  雲計算: 雲計算最火的語言, 典型應用OpenStack
WEB開發: 衆多優秀的WEB框架,衆多大型網站均爲Python開發,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
科學運算、人工智能: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas
系統運維: 運維人員必備語言
金融: 量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,並且重要性逐年提升。緣由:做爲動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很牛逼,生產效率遠遠高於c,c++,java,尤爲擅長策略回測
圖形GUI: PyQT, WxPython,TkInter

 

 
 
python是一門動態解釋性的強類型定義語言
 
 
 
Python解釋器
當咱們編寫Python代碼時,咱們獲得的是一個包含Python代碼的以.py爲擴展名的文本文件。要運行代碼,就須要Python解釋器去執行.py文件。
因爲整個Python語言從規範到解釋器都是開源的,因此理論上,只要水平夠高,任何人均可以編寫Python解釋器來執行Python代碼(固然難度很大)。事實上,確實存在多種Python解釋器。
 
CPython
當咱們從Python官方網站下載並安裝好Python 2.7後,咱們就直接得到了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,因此叫CPython。在命令行下運行python就是啓動CPython解釋器。
CPython是使用最廣的Python解釋器。教程的全部代碼也都在CPython下執行。
 
IPython
IPython是基於CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所加強,可是執行Python代碼的功能和CPython是徹底同樣的。比如不少國產瀏覽器雖然外觀不一樣,但內核其實都是調用了IE。  
CPython用>>>做爲提示符,而IPython用In [序號]:做爲提示符。
 
PyPy
PyPy是另外一個Python解釋器,它的目標是執行速度。PyPy採用JIT技術,對Python代碼進行動態編譯(注意不是解釋),因此能夠顯著提升Python代碼的執行速度。
絕大部分Python代碼均可以在PyPy下運行,可是PyPy和CPython有一些是不一樣的,這就致使相同的Python代碼在兩種解釋器下執行可能會有不一樣的結果。若是你的代碼要放到PyPy下執行,就須要瞭解PyPy和CPython的不一樣點。
 
Jython  
Jython是運行在Java平臺上的Python解釋器,能夠直接把Python代碼編譯成Java字節碼執行。
 
IronPython  
IronPython和Jython相似,只不過IronPython是運行在微軟.Net平臺上的Python解釋器,能夠直接把Python代碼編譯成.Net的字節碼。
 
小結
Python的解釋器不少,但使用最普遍的仍是CPython。若是要和Java或.Net平臺交互,最好的辦法不是用Jython或IronPython,而是經過網絡調用來交互,確保各程序之間的獨立性。
 
2、Python發展史
3、Python 2 or 3?
In summary : Python 2.x is legacy, Python 3.x is the present and future of the language
 
還有誰不支持PYTHON3?
Twisted 
、Python安裝
1
2
3
4
5
6
7
1 、下載安裝包
     https: / / www.python.org / downloads /
2 、安裝
     默認安裝路徑:C:\python27
3 、配置環境變量
     【右鍵計算機】 - - 》【屬性】 - - 》【高級系統設置】 - - 》【高級】 - - 》【環境變量】 - - 》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】  - - > 【Python安裝目錄追加到變值值中,用 ; 分割】
     如:原來的值;C:\python27,切記前面有分號
 
1
2
3
無需安裝,原裝Python環境
   
ps:若是自帶 2.6 ,請更新至 2.7
5、Hello World程序
1
print ( "Hello World!" )
1
2
3
localhost:~ jieli$ vim hello.py
localhost:~ jieli$ python hello.py
Hello World!
1
2
3
#!/usr/bin/env python
   
print   "hello,world"
1
2
3
4
5
6
localhost:~ jieli$ python
Python  2.7 . 10   (default,  Oct   23   2015 18 : 05 : 06 )
[GCC  4.2 . 1   Compatible Apple LLVM  7.0 . 0   (clang - 700.0 . 59.5 )] on darwin
Type   "help" "copyright" "credits"   or   "license"   for   more information.
>>>  print ( "Hello World!" )
Hello World!

6、變量\字符編碼 
變量用於存儲要在計算機程序中引用和操做的信息。 他們還提供了一種以描述性名稱標註數據的方法,因此咱們的程序能夠被讀者和咱們本身更清楚地理解。 將變量視爲容納信息的容器是有幫助的。 它們的惟一目的是將數據標記和存儲在內存中。 而後能夠在整個程序中使用此數據。
聲明變量
name = 「lv」
上述代碼聲明瞭一個變量,變量名爲: name,變量name的值爲:"lv"
 
變量定義的規則:
a、變量名只能是字母、數字或下劃線的任意組合;
b、變量名的第一個字符不能是數字;
c、如下關鍵字不能聲明爲變量名
['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']
 
變量的賦值
python支持中文當變量名
變量和常量
python不支持常量,可是能夠用大寫字母來表示常量
 
7、字符編碼 

python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill)html

ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256-1,因此,ASCII碼最多隻能表示 255 個符號。java

關於中文python

爲了處理漢字,程序員設計了用於簡體中文的GB2312和用於繁體中文的big5。linux

GB2312(1980年)一共收錄了7445個字符,包括6763個漢字和682個其它符號。漢字區的內碼範圍高字節從B0-F7,低字節從A1-FE,佔用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。c++

GB2312 支持的漢字太少。1995年的漢字擴展規範GBK1.0收錄了21886個符號,它分爲漢字區和圖形符號區。漢字區包括21003個字符。2000年的 GB18030是取代GBK1.0的正式國家標準。該標準收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字。如今的PC平臺必須支持GB18030,對嵌入式產品暫不做要求。因此手機、MP3通常只支持GB2312。程序員

從ASCII、GB23十二、GBK 到GB18030,這些編碼方法是向下兼容的,即同一個字符在這些方案中老是有相同的編碼,後面的標準支持更多的字符。在這些編碼中,英文和中文能夠統一地處理。區分中文編碼的方法是高字節的最高位不爲0。按照程序員的稱呼,GB23十二、GBK到GB18030都屬於雙字節字符集 (DBCS)。web

有的中文Windows的缺省內碼仍是GBK,能夠經過GB18030升級包升級到GB18030。不過GB18030相對GBK增長的字符,普通人是很難用到的,一般咱們仍是用GBK指代中文Windows內碼。shell

顯然ASCII碼沒法將世界上的各類文字和符號所有表示,因此,就須要新出一種能夠表明全部字符和符號的編碼,即:Unicode  

Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536,
注:此處說的的是最少2個字節,可能更多vim

UTF-8,是對Unicode編碼的壓縮和優化,他再也不使用最少使用2個字節,而是將全部的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...windows

因此,python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill),若是是以下代碼(python2)的話:

報錯:ascii碼沒法表示中文

1
2
3
#!/usr/bin/env python
   
print   "你好,世界"

改正:應該顯示的告訴python解釋器,用什麼編碼來執行源代碼,即:

1
2
3
4
#!/usr/bin/env python
# -*- coding: utf-8 -*-
   
print   "你好,世界"

註釋:

單行註釋:# 被註釋內容

多行註釋:""" 被註釋內容 """       
 
 
 
8、用戶輸入
格式化輸出:(三種方式)
1)
name = input("name:")       #raw_input 適用於pytho2.X input 適用於pytho3.x
age = int(input("age:")) #int=intteger 整形
print(type(age) ,type( str(age)) )
job = input("job:")
salary = input("salary:")
info='''
-----------info of %s---------
name:%s
age:%d
job:%s
salary:%s
'''% (name,name,age,job,salary)
print(info)
%s:string 字符
%d:整數
%f:浮點
打印字符類型
print(type(age))
2)
name = input("name:")       #raw_input 適用於pytho2.X input 適用於pytho3.x
age = int(input("age:")) #int=intteger 整形
job = input("job:")
salary = input("salary:")
info2='''
-----------info2 of {_name}---------
name:{_name}
age:{_age}
job:{_job}
salary:{_salary}
'''.format(_name=name,
_age=age,
_job=job,
_salary=salary)
print(info2)
3)
name = input("name:")       #raw_input 適用於pytho2.X input 適用於pytho3.x
age = int(input("age:")) #int=intteger 整形
job = input("job:")
salary = input("salary:")
info3='''
-----------info3 of {0}---------
name:{0}
age:{1}
job:{2}
salary:{3}
'''.format(name,age,job,salary)
print(info3)
 
 
9、模塊初識
Python的強大之處在於他有很是豐富和強大的標準庫和第三方庫,幾乎你想實現的任何功能都有相應的Python庫支持。
sys庫:
import sys
print(sys.path) #打印環境變量
 
 
 
import sys
print(sys.argv) #打印相對路徑
 
import sys
print(sys.argv[2]) 
 
os庫:
import os
os.system("dir")
 
import os
cmd_res = os.system("dir") #執行命令,不保存結果
print("-->",cmd_res)
 0即表明成功
 
import os
cmd_res = os.popen("dir").read()  #os.popen 將顯示結果放到內存中 還須要再用read將其顯示出來
print("-->",cmd_res)
os .mkdir( "new_dir" ) #建立目錄
 
調用已經寫好的模塊以login爲例:
 新建一個調入login:
import login
 當調入login和login模塊不在同一個目錄下,會報錯
  此時能夠修改環境變量也能夠添加路徑, 也能夠 將login模塊放到第三方目錄(site-packages)。
10、.pyc文件  
 
 
 
  11、數據類型
一、數字
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也不會致使嚴重後果了。
      python3之後就沒有長整型了。
float(浮點型)
       先掃盲 http://www.cnblogs.com/alex3714/articles/5895848.html 
  浮點數用來處理實數,即帶有小數的數字。相似於C語言中的double類型,佔8個字節(64位),其中52位表示底,11位表示指數,剩下的一位表示符號。
complex(複數)
  複數由實數部分和虛數部分組成,通常形式爲x+yj,其中的x是複數的實數部分,y是複數的虛數部分,這裏的x和y都是實數。
注:Python中存在小數字池:-5 ~ 257
二、布爾值
真 或 假
1  或  0
三、字符串
"hello world"
萬惡的字符串拼接:
  python中的字符串在C語言中體現爲是一個字符數組,每次建立字符串時候須要在內存中開闢一塊連續的空,而且一旦須要修改字符串的話,就須要再次開闢空間,萬惡的+號每出現一次就會在內從中從新開闢一塊空間。
字符串格式化輸出
1
2
3
4
name  =   "alex"
print   "i am %s "   %   name
   
#輸出: i am alex

PS: 字符串是 %s;整數 %d;浮點數%f

字符串經常使用功能:
  • 移除空白
  • 分割
  • 長度
  • 索引
  • 切片
四、列表
建立列表:
1
2
3
name_list  =   [ 'alex' 'seven' 'eric' ]
name_list =  list ([ 'alex' 'seven' 'eric' ])

基本操做:

  • 索引
  • 切片
  • 追加
  • 刪除
  • 長度
  • 切片
  • 循環
  • 包含
五、元組(不可變列表)
建立元組:
1
2
3
ages  =   ( 11 22 33 44 55 )
ages  =   tuple (( 11 22 33 44 55 ))
 
六、字典(無序)
建立字典:
1
2
3
person  =   { "name" "mr.wu" 'age' 18 }
person  =   dict ({ "name" "mr.wu" 'age' 18 })

經常使用操做:

  • 索引
  • 新增
  • 刪除
  • 鍵、值、鍵值對
  • 循環
  • 長度
12、數據運算
算數運算:
比較運算:
賦值運算:
邏輯運算:
成員運算:
身份運算;
位運算:
#!/usr/bin/python
  
=  60             # 60 = 0011 1100
=  13             # 13 = 0000 1101
=  0
  
=  a & b;         # 12 = 0000 1100
print  "Line 1 - Value of c is " , c
  
=  a | b;         # 61 = 0011 1101
print  "Line 2 - Value of c is " , c
  
=  a ^ b;         # 49 = 0011 0001 #相同爲0,不一樣爲1
print  "Line 3 - Value of c is " , c
  
=  ~a;            # -61 = 1100 0011
print  "Line 4 - Value of c is " , c
  
=  a <<  2 ;        # 240 = 1111 0000
print  "Line 5 - Value of c is " , c
  
=  a >>  2 ;        # 15 = 0000 1111
print  "Line 6 - Value of c is " , c
*按位取反運算規則(按位取反再加1)   詳解http://blog.csdn.net/wenxinwukui234/article/details/42119265
運算符優先級:
 
 
 
十3、表達式 if  else
輸入密碼不可見,須要利用getpass模塊中的getpass方法:
import getpass    #import爲python的標準庫
username = input("username:")
password = getpass.getpass("password:")
print(username,password)
 
密碼驗證:  
_username = 'lv'
_password = '123'
username = input("username:")
password = input("password:")
if _username == username and _password == password:
print("Welecom user {name} login..".format(name=username))
else:
print("Invalid username or password!")
結果:
比較大小,使用if elif else:  
age_of_oldboy = 56
guess_age = int(input("guess age:"))
if guess_age == age_of_oldboy :
print("yes,you got it.")
elifguess_age > age_of_oldboy :
print("think smaller...")
else:
print("think bigger!")
 
十4、while循環
最簡單的while循環:
 
  
count = 0
while True:
print("count:",count)
count = count +1 #count +=1
if count == 1000:
break
猜三次,三次都錯就結束: 涉及到while循環
猜年齡 while:
age_of_oldboy = 56
count = 0
while True:
if count ==3 :
break
guess_age = int(input("guess age:"))
if guess_age == age_of_oldboy :
print("yes,you got it!")
break
elif guess_age >age_of_oldboy :
print("think smaller...")
else:
print("think bigger...")
count +=1
 
while循環優化:
age_of_oldboy = 56
count = 0
while count <3:
guess_age = int(input("guess age:"))
if guess_age == age_of_oldboy :
print("yes,you got it!")
break
elif guess_age >age_of_oldboy :
print("think smaller...")
else:
print("think bigger...")
count +=1
else :
print("you have tried too many times.. fuck off")
 
十5、for循環:
最簡單的循環10次
for i in range(10):
print("loop ",i)
猜年齡 for:
age_of_oldboy = 56
count = 0
for i in range(3):
guess_age = int(input("guess age:"))
if guess_age == age_of_oldboy :
print("yes,you got it!")
break
elif guess_age >age_of_oldboy :
print("think smaller...")
else:
print("think bigger...")
count +=1
else :
print("you have tried too many times.. fuck off")
 
猜年齡 任意玩:
age_of_oldboy = 56
count = 0
# while count <3: while和for均可以
for i in range(4):
guess_age = int(input("guess age:"))
if guess_age == age_of_oldboy :
print("yes,you got it!")
break
elif guess_age >age_of_oldboy :
print("think smaller...")
else:
print("think bigger...")
count +=1
if count == 3:
continue_confirm = input("do you want to keep guessing?")
if continue_confirm != 'n':
count = 0
間斷執行for
for i in range(1,10,2):
print("loop ",i)
for循環中的continue continue:跳出本次循環進入下次循環 break:結束本次循環
continue:
for i in range(0,10):
if i<5:
print("loop",i)
else:
continue
print("hehe")
 
 
break:
for i in range(10):
print('-------------',i)
for j in range(10):
print(j)
if j>5:
break

做業二:編寫登錄接口

  • 輸入用戶名密碼
  • 認證成功後顯示歡迎信息
  • 輸錯三次後鎖定
 
bytes類型(字節類型  二進制類型)
Python3的bytes/str(字符串)之別(http://www.ituring.com.cn/article/1116
 
三元運算
    result =值1if條件 else值2
若是條件爲真:result = 值1
若是條件爲假:result = 值2
 
進制
  • 二進制,01
  • 八進制,01234567
  • 十進制,0123456789
  • 十六進制,0123456789ABCDEF  二進制到16進制轉換http://jingyan.baidu.com/album/47a29f24292608c0142399cb.html?picindex=1
 
 
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">



相關文章
相關標籤/搜索