解放人力:讓機器(好比計算機)按照人們事先爲其編寫好的程序自發地去工做php
人----------->漢語--------------->中國人html
八格牙路----------->日本人java
汪汪汪------------->狗python
編程語言----------->計算機linux
編程語言即語言,語言的本質就是溝通,於是編程語言與英語 、法語、日語等全部語言並沒有區別,只不過英語是人與人之間溝通的介質,而編程語言則是程序員與計算機溝通的介質。c++
程序員把本身想要說的話用編程的語言寫到文件裏,這其實就開發了一個程序,接下來讓計算機按照文件裏說的內容去作事情,這就是程序的執行。程序員
一:機器語言:機器語言是用二進制代碼表示的計算機能直接識別和執行的一種機器指令的集合。
優勢:靈活、直接執行和速度快。
缺點:不一樣型號的計算機其機器語言是不相通的,按着一種計算機的機器指令編制的程序,不能在另外一種計算機上執行。 二:彙編語言:彙編語言的實質和機器語言是相同的,都是直接對硬件操做,只不過指令採用了英文縮寫的,標識符更容易識別和記憶。它一樣須要編程者將每一步具體的操做用命令的形式寫出來。
優勢:能完成通常高級語言所不能實現的操做,並且源程序經彙編生成的可執行文件比較小,且執行速度很快。
缺點:源程序比較冗長、複雜、容易出錯,並且使用匯編語言編程須要有更多的計算機專業知識。 三:高級語言:明確地講,高級語言就是說人話,用人類能讀懂的(好比英文)字符編程。高級語言是絕大多數編程者的選擇。和彙編語言相比,它不但將許多相關的機器指令合成爲單條指令而且去掉了與具體操做有關但與完成工做無關的細節,例如使用堆棧、寄存器等。
優勢:大大簡化了程序中的指令。同時,因爲省略了不少細節,編程者也就不須要有太多的專業知識。
缺點:高級語言所編制的程序不能直接被計算機識別,必須通過轉換才能被執行。
按轉換方式可將它們分爲兩類: 解釋類:執行方式相似於咱們平常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(如python程序,先翻譯/編譯成字節碼,而後由解釋器解釋執行,這個過程程序員都無需關心了,享受這種便利便可),一邊執行
優勢:這種方式比較靈活,調試程序極爲方便,程序一旦出錯,當即調試當即就能夠測試結果
缺點:效率比較低,並且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器。只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,因此運行速度是不如編譯後的程序運行的快的.
編譯類:編譯是指在程序執行以前,就將程序源代碼「翻譯」成機器指令,並保存成二進制文件 優勢:編譯後的代碼能夠直接在機器上運行,運行速度比解釋型要高。 缺點:調試程序麻煩,程序一旦須要修改,必須先修改源代碼,再從新編譯後才能執行。
總結:編程語言經歷了:機器語言-------->彙編語言------------>高級語言(java,C#,php,ruby,python)web
1:開發效率從低到高shell
2:執行效率從高到低編程
3:掌握難度從難到易
註解:執行效率不是問題,硬件已經足夠用,因而開發效率成了關鍵,於是高級語言在當今世界大行其道。
python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言(由Guido參加設計的一種教學語言,是專門爲非專業程序員設計的,優美強大可是流產了,非開源)的一種繼承。
最新的TIOBE排行榜,Python躍居第五!!!
摘自http://www.tiobe.com/tiobe-index/
由上圖可見,Python總體呈上升趨勢,反映出Python應用愈來愈普遍而且也逐漸獲得業內的承認!!!
由上圖可見,Python總體呈上升趨勢,反映出Python應用愈來愈普遍而且也逐漸獲得業內的承認!!!
Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域。目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。
目前Python主要應用領域:
Python在一些公司的應用:
編譯型vs解釋型
編譯型
優勢:編譯器通常會有預編譯的過程對代碼進行優化。由於編譯只作一次,運行時不須要編譯,因此編譯型語言的程序執行效率高。能夠脫離語言環境獨立運行。
缺點:編譯以後若是須要修改就須要整個模塊從新編譯。編譯的時候根據對應的運行環境生成機器碼,不一樣的操做系統之間移植就會有問題,須要根據運行的操做系統環境編譯不一樣的可執行文件。
解釋型
優勢:有良好的平臺兼容性,在任何環境中均可以運行,前提是安裝瞭解釋器(虛擬機)。靈活,修改代碼的時候直接修改就能夠,能夠快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。
註解:java代碼號稱一次編譯處處運行,由於java代理須要先編譯成字節碼(一種中間格式的代碼),而後拿着字節碼處處運行,每次運行都須要交給jvm去編譯成機器指令後才能執行,於是java是混合型
而有的人會有疑問,python代碼也是先編譯成字節碼而後交給python解釋器去執行的啊,難道python不是混合型嗎?固然不是
1. 首先須要知道,只有在import導入py文件時,纔會產生pyc字節碼文件,該字節碼文件是能夠代替源文件而直接執行的
2. 但每次執行py文件,產生的字節碼並不會保留下來,也就是說,每次執行py文件,都是要從新經歷一遍:py文件->字節碼-->python解釋器-->機器碼,每次都是一個從新解釋執行的過程。
這他媽的還用問,你都TMD看了這麼多,還TMD問這種問題?
C 和 Python、Java、C#等
C語言: 代碼編譯獲得 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工做
其餘語言: 代碼編譯獲得 字節碼 ,虛擬機執行字節碼並轉換成機器碼再後在處理器上執行
CPython解釋器是由C語言開發的
對於使用:Python的類庫齊全而且使用簡潔,若是要實現一樣的功能,Python 10行代碼能夠解決,C可能就須要100行甚至更多.
對於速度:Python的運行速度相較與C,絕逼是慢了
Python 和 Java、C#等
對於使用:Linux原裝Python,其餘語言沒有;以上幾門語言都有很是豐富的類庫支持
對於速度:Python在速度上可能稍顯遜色
1.速度永遠不是關鍵
對大多數的應用程序來講,並不須要這麼快的運行速度,由於用戶根本感受不出來。例如開發一個下載MP3的網絡應用程序,C程序的運行時間須要0.001秒,而Python程序的運行時間須要0.1秒,慢了100倍,但因爲網絡更慢,須要等待1秒,你想,用戶能感受到1.001秒和1.1秒的區別嗎?這就比如F1賽車和普通的出租車在北京三環路上行駛的道理同樣,雖然F1賽車理論時速高達400千米,但因爲三環路堵車的時速只有20千米,所以,做爲乘客,你感受的時速永遠是20千米。
2.加密也不是關鍵
對於編譯型語言如C語言來講,能夠將編譯後的代碼發給用戶,用戶反解幾乎是不可能的,至關於自帶加密功能了。而解釋型語言如python只能發佈源碼給用戶,但其實這沒什麼問題,如今主流的思想是軟件開源,千萬別意淫你的軟件有多麼大的商業價值。
python是一門語言,用這門語言寫出的代碼,須要由python的解釋器去解釋執行,解釋器有以下分類:
以上除PyPy以外,其餘的Python的對應關係和執行流程以下:
PyPy,在Python的基礎上對Python的字節碼進一步處理,從而提高執行速度!
注意:環境變量的設置
windows:
12345671
、下載安裝包
https:
/
/
www.python.org
/
downloads
/
2
、安裝
默認安裝路徑:C:\python27
3
、配置環境變量
【右鍵計算機】
-
-
》【屬性】
-
-
》【高級系統設置】
-
-
》【高級】
-
-
》【環境變量】
-
-
》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】
-
-
> 【Python安裝目錄以及安裝目錄下的Scripts目錄追加到變值值中,用 ; 分割】
如:原來的值;C:\python27,切記前面有分號
linux:
123無需安裝,原裝Python環境
ps:若是自帶
2.6
,請更新至
2.7
更新Python
windows:
1卸載重裝便可
linux:
Linux的yum依賴自帶Python,爲防止錯誤,此處更新其實就是再安裝一個Python
12345678910111213141516171819查看默認Python版本
python
-
V
1
、安裝gcc,用於編譯Python源碼
yum install gcc
2
、下載源碼包,https:
/
/
www.python.org
/
ftp
/
python
/
3
、解壓並進入源碼文件
4
、編譯安裝
.
/
configure
make
all
make install
5
、查看版本
/
usr
/
local
/
bin
/
python2.
7
-
V
6
、修改默認Python版本
mv
/
usr
/
bin
/
python
/
usr
/
bin
/
python2.
6
ln
-
s
/
usr
/
local
/
bin
/
python2.
7
/
usr
/
bin
/
python
7
、防止yum執行異常,修改yum使用的Python版本
vi
/
usr
/
bin
/
yum
將頭部
#!/usr/bin/python 修改成 #!/usr/bin/python2.6
1. 解釋器:即時調試代碼,代碼沒法永久保存
2. 文件:永久保存代碼
在D:\python_test\目錄下新建文件hello.py,編寫代碼以下
print('hello world')
執行hello.py,即python D:\python_test\hello.py
python內部執行過程以下:
上一步中執行python D:\python_test\hello.py時,明確的指出 hello.py 腳本由 python 解釋器來執行。
在linux平臺中若是想要相似於執行shell腳本同樣執行python腳本,例: ./hello.py
,那麼就須要在 hello.py 文件的頭部指定解釋器,以下:
#!/usr/bin/env python #該行只對linux有效 print('hello world')
ps:執行前需給予 hello.py 執行權限,chmod 755 hello.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
當行注視:# 被註釋內容
多行註釋:""" 被註釋內容 """
Python有大量的模塊,從而使得開發Python程序很是簡潔。類庫有包括三中:
Python內部提供一個 sys 的模塊,其中的 sys.argv 用來捕獲執行執行python腳本時傳入的參數
1
2
3
4
5
6
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import
sys
print
sys.argv
|
執行
C:\Users\Administrator>python D:\python_test\hello.py arg1 arg2 arg3 ['D:\\python_test\\hello.py', 'arg1', 'arg2', 'arg3']
執行Python代碼時,若是導入了其餘的 .py 文件,那麼,執行過程當中會自動生成一個與其同名的 .pyc 文件,該文件就是Python解釋器編譯以後產生的字節碼。
ps:代碼通過編譯能夠產生字節碼;字節碼經過反編譯也能夠獲得代碼。
程序執行的本質就是一系列狀態的變化,變量二字的核心一個是變,一個是量,'變'正好對應程序的變化,'量'即計量,反映的是某種狀態,
好比一款遊戲中的人物初始等級:level=1,過了一段時間後升級了:level=10
#!/usr/bin/env python name='egon' #變量的聲明
name #經過變量名,引用變量的值
print(name) #引用而且打印變量名name對應的值,即'egon'
#!/usr/bin/env python name1='lhf' name2='egon'
#!/usr/bin/env python name1='lhf' name2=name1
#!/usr/bin/env python #一個遊戲人物的等級由1級升到2級 level=1 level=2 #一個遊戲賬號的密碼由'123'改爲'456' passwd='123' passwd='456' #一我的的名字有'lhf'改爲'egon' name='lhf' name='egon'
python3中統一都是input,python2中有raw_input等同於python3的input,另外python2中也有input
1.res=input("python3: ")
2.res=raw_input("python2: ")
3.res=raw_input("python2: ")
1,2不管接收何種輸入,都被存爲字符串賦值給res,而3的意思是,用戶輸入何種類型,就以何種類型賦值給res
#!/usr/bin/env python name=input('請輸入用戶名:') print(name)
執行
C:\Users\Administrator>python D:\python_test\hello.py 請輸入用戶名:egon egon
===============================================================================
輸入密碼時,若是想要不可見,須要利用getpass 模塊中的 getpass方法,即:
#!/usr/bin/env python import getpass password=getpass.getpass('請輸入密碼:') print(password)
執行(在pycharm中沒法執行,須要到終端中執行)
C:\Users\Administrator>python D:\python_test\hello.py 請輸入密碼: 123456
1 單分支
2 多分支
需求1、用戶登錄驗證
#!/usr/bin/env python name=input('請輸入用戶名字:') password=input('請輸入密碼:') if name == 'egon' and password == '123': print('egon login success') else: print('用戶名或密碼錯誤')
需求2、根據用戶輸入內容輸出其權限
#!/usr/bin/env python #根據用戶輸入內容打印其權限 ''' egon --> 超級管理員 tom --> 普通管理員 jack,rain --> 業務主管 其餘 --> 普通用戶 ''' name=input('請輸入用戶名字:') if name == 'egon': print('超級管理員') elif name == 'tom': print('普通管理員') elif name == 'jack' or name == 'rain': print('業務主管') else: print('普通用戶')
while 循環
一、基本循環
while 條件: # 循環體 # 若是條件爲真,那麼循環體則執行 # 若是條件爲假,那麼循環體不執行
二、break
break用於退出本層循環
while True: print "123" break print "456"
三、continue
continue用於退出本次循環,繼續下一次循環
while True: print "123" continue print "456"
4 tag
#!/usr/bin/env python
#_*_coding:utf-8_*_
# while True:
# username=input('username: ')
# password=input('password: ')
# if username == 'egon' and password == '123':
# while True:
# cmd=input('>>: ')
# if cmd == 'q':
# break
# print('------>%s' %cmd)
# break
tag=True
while tag:
username=input('username: ')
password=input('password: ')
if username == 'egon' and password == '123':
while tag:
cmd=input('>>: ')
if cmd == 'q':
tag=False
continue
print('------>%s' %cmd)
for循環
for i in range(1,10): for j in range(1,i+1): print('%s*%s=%s' %(i,j,i*j),end=' ') print()
一、使用while循環輸出1 2 3 4 5 6 8 9 10
二、求1-100的全部數的和
三、輸出 1-100 內的全部奇數
四、輸出 1-100 內的全部偶數
五、求1-2+3-4+5 ... 99的全部數的和
六、用戶登錄(三次機會重試)
#題一
count=1
while count <= 10:
if count == 7:
count+=1
continue
print(count)
count+=1
count=1
while count <= 10:
if count != 7:
print(count)
count+=1
#題目二
res=0
count=1
while count <= 100:
res+=count
count+=1
print(res)
#題目三
count=1
while count <= 100:
if count%2 != 0:
print(count)
count+=1
#題目四
count=1
while count <= 100:
if count%2 == 0:
print(count)
count+=1
#題目五
res=0
count=1
while count <= 5:
if count%2 == 0:
res-=count
else:
res+=count
count+=1
print(res)
#題目六count=0while count < 3: name=input('請輸入用戶名:') password=input('請輸入密碼:') if name == 'egon' and password == '123': print('login success') break else: print('用戶名或者密碼錯誤') count+=1