1、python介紹及發展歷史java
我的理解:python是門計算機語言,跟C、C++、Java等同樣,爲何和英語、法語同樣稱爲語言?語言有本身的共性,就像咱們嬰兒時期咿呀咿呀學說話,讀書時代的拼音、單詞、組詞、語法、造句、寫做,從簡單到複雜,從詞到造句到寫做,這就是學語言的原理。python也是如此,儘管本人還不能一窺全貌。python
我的方法:先模仿再創造,先死記再變通,運用5W1H(when、where、who、what、why、how)去學習,多思考。數據庫
博客目標:只提取有用的東西,邏輯清晰明瞭,語言簡練實用。編程
廢話少說,接下來先作python介紹:windows
where:安全
python擅長的領域:服務器
Web開發--Django/pyramid/Tornado/bottle/Flask/WebPy網絡
網絡編程--Twisted/Requests/Scrapy/Paramiko多線程
科學運算--SciPy/Pandas/IPython併發
GUI圖形開發--wxPython/PyQT/Kivy
運維自動化--OpenStack/SaltStack/Ansible/騰訊藍鯨(LOL)
how:
如何高效的適應業務的頻繁更新、變動、上線、擴展?
如何在最低成本的前提下實現業務併發能力的可伸縮式擴展?
如何實現運維人員從被動故障處理到故障預防和故障高度自愈的轉換?
若是經過不斷優化運維流程、自動化工具來下降運維成本、人工參與度,最終實現無人運維?
what:
python是一門動態解釋性的強類型定義語言。
從不一樣角度去看編程語言的類型:編譯型和解釋型、動態語言和靜態語言、強類型語言和弱類型語言。
1.執行角度:
編譯型--一個程序對源代碼進行轉換,生成可執行文件(機器代碼),就能夠直接運行了,但大型項目多個文件時就須要所有編譯完才能運行;如C、C++等
解釋型--就像看書,看一句讀一句,即不停的解釋執行,解釋執行。所以解釋型比編譯型執行效率要慢。
編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機能夠直接以機器語言來運行此程序,速度很快;
解釋器則是隻在執行程序時,才一條一條的解釋成機器語言給計算機來執行,因此運行速度是不如編譯後的程序運行的快的.
應用場景:
編譯型--用在像開發操做系統、大型應用程序、數據庫等C、C++、Pascal等
解釋型--用在網頁腳本、服務器腳本及輔助開發接口,對速度要求不高、兼容性好,如java、javaScript、VB、Perl、Python等。解釋型語言更容易移植,像java一次編譯處處運行。
2.語言動靜
動態類型語言:動態類型語言是指在運行期間纔去作數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其餘的各類腳本語言如VBScript也多少屬於動態類型語言。
靜態類型語言:靜態類型語言與動態類型語言恰好相反,它的數據類型是在編譯其間檢查的,也就是說在寫程序時要聲明全部變量的數據類型,C/C++是靜態類型語言的典型表明,其餘的靜態類型語言還有C#、JAVA等。
3.語言強弱
強類型定義語言:強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,若是不通過強制轉換,那麼它就永遠是這個數據類型了。舉個例子:若是你定義了一個整型變量a,那麼程序根本不可能將a看成字符串類型處理。強類型定義語言是類型安全的語言。
弱類型定義語言:數據類型能夠被忽略的語言。它與強類型定義語言相反, 一個變量能夠賦不一樣數據類型的值。
2、python特色
優勢:
1.Python的定位是「優雅」、「明確」、「簡單」;
2.開發效率很是高,Python有很是強大的第三方庫,基本上你想經過計算機實現任何功能,避免重複造輪子;
3.高級語言:不考慮程序內存處理等底層細節;
4.可移植性:全部Python程序無需修改,就幾乎能夠在市場上全部的系統平臺上運行;
5.可擴展性:關鍵代碼可以使用C/C++編寫,使得python程序運行更快;
6.可嵌入性:python嵌入到C/C++中,提供腳本功能;
缺點:
1.速度慢,Python 的運行速度相比C語言確實慢不少,跟JAVA相比也要慢一些,基本知足程序速度要求,除非搜索引擎等須要C編寫;
2.代碼不能加密,由於PYTHON是解釋性語言,它的源碼都是以名文形式存放的;
3.線程不能利用多CPU問題,因爲GIL即全局解釋器鎖(Global Interpreter Lock)存在,禁止多線程並行執行;
python解釋器
CPython:C語言開發,應用最普遍
IPython:CPython的加強型交互式解釋器
PyPy:目標是執行速度,動態編譯python代碼,與CPython解釋器下執行結果可能略有不一樣
Jython:Java平臺的解釋器
IronPython:微軟.Net平臺上的解釋器
3、安裝
環境變量:
【右鍵計算機】
-
-
》【屬性】
-
-
》【高級系統設置】
-
-
》【高級】
-
-
》【環境變量】
-
-
》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】
-
-
> 【Python安裝目錄追加到變值值中,用 ; 分割】
如:原來的值;C:\python27,切記前面有分號
4、hello world程序
C:\Users\HW>python
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AM
D64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello World!")
Hello World!
5、變量/字符編碼
變量聲明:
#_*_ coding:utf-8 _*_ #指定程序文件編碼類型爲utf-8
name = "Alex" #變量名爲:name,變量name的值爲:"Alex"
變量定義的規則:
字符編碼歷史:
ASCII:python2默認是ASCII編碼,1個字節,最多2**8-1=255個字符,其中0-9爲48-57,A-Z爲65-90,a-z爲97-122;
中文編碼:
Unicode(統一碼、萬國碼、單一碼):最少2個字節,即:2 **16 = 65536
註釋:
當行注視:# 被註釋內容
多行註釋:""" 被註釋內容 """
6、用戶輸入函數
代碼:
# !/usr/bin/env python
# _*_coding:utf-8_*_
# name = raw_input("What is your name?") #only on python 2.x
name = input("What is your name?")
print("Hello " + name)
執行結果:
What is your name?alex
Hello alex
7、.pyc是什麼
當python程序運行時,編譯的結果則是保存在位於內存中的PyCodeObject(Python編譯器真正編譯成的結果)中,當Python程序運行結束時,Python解釋器則將PyCodeObject寫回到pyc文件中。
當python程序第二次運行時,首先程序會在硬盤中尋找pyc文件,若是找到,則直接載入,不然就重複上面的過程。
8、數據類型初識
1.數字
int(整型):範圍是32位系統爲-2**31~2**31-1,64位系統爲-2**63~2**63-1
long(長整型):整型範圍溢出,就會變成long
float(浮點型):小數就是浮點數
complex(複數):複數由實數部分和虛數部分組成,通常形式爲x+yj
2.布爾值
3.字符串
如上例,"+":表明拼接,意思是在內存中從新開闢一塊新空間存儲新字符串,因此推薦
字符串的格式化輸出
name = "alex"
print("i am %s" % name)
結果:i am alex
注意:字符串是 %s;整數 %d;浮點數%f
4.列表
建立列表:
name_list
=
[
'alex'
,
'seven'
,
'eric'
]
或
name_list =
list
([
'alex'
,
'seven'
,
'eric'
])
基本操做:
5.元組(不可變列表)
建立元組:
ages
=
(
11
,
22
,
33
,
44
,
55
)
或
ages
=
tuple
((
11
,
22
,
33
,
44
,
55
))
6.字典(無序)
建立字典:
person
=
{
"name"
:
"mr.wu"
,
'age'
:
18
}
或
person
=
dict
({
"name"
:
"mr.wu"
,
'age'
:
18
})
經常使用操做:
9、數據運算
c = a & b
c = a | b
c = a ^ b
c = ~a
c = a << 2
c = a >> 2
10、條件判斷表達式if..else..
場景1、用戶登錄驗證
模擬登錄:
1. 用戶輸入賬號密碼進行登錄
2. 用戶信息保存在文件內
3. 用戶密碼輸入錯誤三次後鎖定用戶
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import getpass
#用戶名和密碼
user = "admin"
passwd = "123456"
username = input("請輸入用戶名:")
#password = input("請輸入密碼:") #明文輸入
password = getpass.getpass("請輸入密碼:") #密文輸入
if username == user and password == passwd: #判斷,若是兩個都爲真,則執行成功語句
print("登陸成功!")
else: #若是至少一個爲假,則執行失敗語句
print("登陸失敗...")
11、循環表達式for和while
例子1:循環10次
for i in range(10):
print(i)
結果:
0
1
2
3
4
5
6
7
8
9
例子2:打印5及以上的循環
for i in range(10):
if i < 5:
continue
print("loop",i)
loop 5
loop 6
loop 7
loop 8
loop 9
例子3:打印小於等於5的循環
for i in range(10):
if i > 5:
break
print("loop",i)
loop 1
loop 2
loop 3
loop 4
loop 5
---------------------------------------------------
例子4:循環100次,while True爲死循環
count = 0
while True:
print("你是風兒我是沙,纏纏綿綿到天涯...",count)
count +=1
if count == 100:
print("去你媽的風和沙,大家這些脫了褲子是人,穿上褲子是鬼的臭男人..")
break
例子5:循環100次,while True爲死循環
#!/usr/bin/env python
# -*- coding: utf-8 -*-
my_age
=
28
count
=
0
while
count <
3
:
user_input
=
int
(
input
(
"input your guess num:"
))
if
user_input
=
=
my_age:
print
(
"Congratulations, you got it !"
)
break
elif
user_input < my_age:
print
(
"Oops,think bigger!"
)
else
:
print
(
"think smaller!"
)
count
+
=
1
#每次loop 計數器+1
else
:
print
(
"猜這麼屢次都不對,你個笨蛋."
)
12、break and continue
如上例,
break:直接跳出整個循環
continue:不執行接下來的語句,進入下次loop循環
十3、做業需求
做業一:博客
做業二:編寫登錄接口