Python基礎一

學習基礎詳查:html

https://www.cnblogs.com/alex3714/articles/5885096.htmljava

https://www.cnblogs.com/linhaifeng/articles/6384466.htmlpython

1.python是一門動態解釋性的強類型定義語言。c++

2.Python能作什麼程序員

  1. 網絡應用:包括web網站 、服務器後臺服務等,在這方面Python有優秀的web框架如Django\Tornado\Flask等,網絡服務框架有著名的Twisted,異步通訊有牛X的eventlet.
  2. 科學運算:隨着NumPy、SciPy、matplotlib、ETS等衆多程序庫的開發,Python愈來愈適合於作科學計算。與科學計算領域最流行的商業軟件MATLAB相比,Python是一門真正的通用程序設計語言,比MATLAB所採用的腳本語言的應用範圍更普遍,有更多程序庫的支持,適用於Windows和Linux等多種平臺,徹底免費而且開放源碼。雖然MATLAB中的某些高級功能目前還沒法替代,可是對於基礎性、前瞻性的科研工做和應用系統的開發,徹底能夠用Python來完成。
  3. GUI程序:python提供了多個圖形開發界面的庫,包括PyQt,WxPython,自帶的有Tkinter,這些庫容許Python程序員很方便的建立完整的、功能健全的GUI用戶界面。
  4. 系統管理工具:Python能夠是作運維人員最喜歡用的語言了,能夠用它來輕鬆的開發自動化管理工具、監控程序等,事實上如今不少開源軟件也都是用Python開發的,如用於IT配置管理的SaltStack\Ansible, 作虛擬化的OpenStack,作備份用的Bacula等。
  5. 其它程序:你知道嗎?Python 用來寫爬蟲也是很拿手的,還有作遊戲,還能夠用來作嵌入式開發、作驅動程序等,總之,Python能作的事情仍是很是多的。

3.Python的優缺點web

先看優勢算法

  1. Python的定位是「優雅」、「明確」、「簡單」,因此Python程序看上去老是簡單易懂,入門容易。
  2. 開發效率很是高,Python有很是強大的第三方庫,基本上你想經過計算機實現任何功能,Python官方庫裏都有相應的模塊進行支持,直接下載調用後,在基礎庫的基礎上再進行開發,大大下降開發週期,避免重複造輪子。
  3. 高級語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節
  4. 可移植性————因爲它的開源本質,Python已經被移植在許多平臺上(通過改動使它可以工 做在不一樣平臺上)。若是你當心地避免使用依賴於系統的特性,那麼你的全部Python程序無需修改就幾乎能夠在市場上全部的系統平臺上運行
  5. 可擴展性————若是你須要你的一段關鍵代碼運行得更快或者但願某些算法不公開,你能夠把你的部分程序用C或C++編寫,而後在你的Python程序中使用它們。
  6. 可嵌入性————你能夠把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。

再看缺點:數組

  1. 速度慢,Python 的運行速度相比C語言確實慢不少,跟JAVA相比也要慢一些,所以這也是不少所謂的大牛不屑於使用Python的主要緣由,但其實這裏所指的運行速度慢在大多數狀況下用戶是沒法直接感知到的,必須藉助測試工具才能體現出來,好比你用C運一個程序花了0.01s,用Python是0.1s,這樣C語言直接比Python快了10倍,算是很是誇張了,可是你是沒法直接經過肉眼感知的,由於一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數狀況下Python已經徹底能夠知足你對程序速度的要求,除非你要寫對速度要求極高的搜索引擎等,這種狀況下,固然仍是建議你用C去實現的。
  2. 代碼不能加密,由於PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認爲這算是一個缺點,若是你的項目要求源代碼必須是加密的,那你一開始就不該該用Python來去實現。
  3. 線程不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是計算機程序設計語言解釋器用於同步線程的工具,使得任什麼時候刻僅有一個線程在執行,Python的線程是操做系統的原生線程。在Linux上爲pthread,在Windows上爲Win thread,徹底由操做系統調度線程的執行。一個python解釋器進程內有一條主線程,以及多條用戶程序的執行線程。即便在多核CPU平臺上,因爲GIL的存在,因此禁止多線程的並行執行。

Python安裝 服務器

Python解釋器網絡

CPython

這個解釋器是用C語言開發的,因此叫CPython。在命令行下運行python就是啓動CPython解釋器。CPython是使用最廣的Python解釋器。教程的全部代碼也都在CPython下執行。

IPython

IPython是基於CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所加強,可是執行Python代碼的功能和CPython是徹底同樣的。

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,而是經過網絡調用來交互,確保各程序之間的獨立性。

Python的變量及數據類型

Python的基本數據類型有5種: 整型(int), 浮點型(float), 字符型(string), 布爾型(bool),空值(None).

空值

空值是Python裏一個特殊的值,用None表示。None不能理解爲0,由於0是有意義的,而None是一個特殊的空值。 

變量和常量

變量命名規則

先介紹標識符的概念。和其餘高級語言同樣,用來標識變量、符號常量、函數、數組、類型等實體名字的有效字符序列稱爲標識符(identifier)。簡單地說,標識符就是一個名字。變量名是標識符的一種,變量的名字必須遵循標識符的命名規則。

Python語言和java,c++等不少語言同樣,規定標識符只能由字母、數字和下劃線3種字符組成,且第一個字符必須爲字母或下劃線。 

注意:在Python中,大寫字母和小寫字母被認爲是兩個不一樣的字符。所以,sum和SUM是兩個不一樣的變量名。通常地,變量名用小寫字母表示,與人們平常習慣一致,以增長可讀性。應注意變量名不能與Python的關鍵字、系統函數名和類名相同。 

變量名命名習慣

變量名的定義在能表達清楚它的做用的前提下最越簡潔越好,能用一個單詞表述清楚的儘可能就不要用兩個。變量起名時通常有這麼幾種寫法,你以爲哪一種最簡潔,你就選哪一種吧。

CheckCurrentConnCount

check_current_conn_count

checkCurrentConnCount

定義變量

瞭解了變量的概念和用途後,咱們一塊兒來定義幾個簡單的變量看一下

name = ‘gangzi’  #name 是字符串,字符串要加上引號噢

age = 29  #age 是整數,整數不要加引號,加了引號後就變成字符串了

has_girlfriend = False  #是布爾值,通常用這個作邏輯判斷,如if has_girlfriend:print ‘good for you !’

age = age + 1 #這個結果應該是30,運算流程是先將=號後面的age +1結果算出,而後再把這個結果重賦值給age, 因爲age以前的值是29,從新賦值後,age值變爲30.

最後,理解變量在計算機內存中的表示也很是重要。當咱們寫:

_name = 'gangzi'

時,Python解釋器幹了兩件事情:

  1. 在內存中建立一個」gangzi」的字符串;
  2. 在內存中建立了一個名爲_name的變量,並把它指向」gangzi」的內存地址。 

常量

所謂常量就是不能變的變量。在Python中,一般用所有大寫的變量名錶示常量:

PI = 3.14159265359

但事實上PI仍然是一個變量,Python根本沒有任何機制保證PI不會被改變,因此,用所有大寫的變量名錶示常量只是一個習慣上的用法。

數據運算符

python語言支持如下幾種運算

算術運算

比較運算

Assignment Operators

二進制運算

關係運算

驗證運算

Python的字符串

由於Python的誕生比Unicode標準發佈的時間還要早,因此最先的Python只支持ASCII編碼,普通的字符串'ABC'在Python內部都是ASCII編碼的。Python提供了ord()和chr()函數,能夠把字母和對應的數字相互轉換:

>>> ord('A') 65 >>> chr(65) 'A'

Python在後來添加了對Unicode的支持,以Unicode表示的字符串用u'...'表示。

u''u'\u4e2d'是同樣的,\u後面是十六進制的Unicode碼。所以,u'A'u'\u0041'也是同樣的。

兩種字符串如何相互轉換?字符串'xxx'雖然是ASCII編碼,但也能夠當作是UTF-8編碼,而u'xxx'則只能是Unicode編碼。

u'xxx'轉換爲UTF-8編碼的'xxx'encode('utf-8')方法:

>>> u'ABC'.encode('utf-8') 'ABC' >>> u'中文'.encode('utf-8') '\xe4\xb8\xad\xe6\x96\x87'

英文字符轉換後表示的UTF-8的值和Unicode值相等(但佔用的存儲空間不一樣),而中文字符轉換後1個Unicode字符將變爲3個UTF-8字符,你看到的\xe4就是其中一個字節,由於它的值是228,沒有對應的字母能夠顯示,因此以十六進制顯示字節的數值。len()函數能夠返回字符串的長度:

>>> len(u'ABC') 3 >>> len('ABC') 3 >>> len(u'中文') 2 >>> len('\xe4\xb8\xad\xe6\x96\x87') 6

反過來,把UTF-8編碼表示的字符串'xxx'轉換爲Unicode字符串u'xxx'decode('utf-8')方法:

>>> 'abc'.decode('utf-8') u'abc' >>> '\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8') u'\u4e2d\u6587' >>> print ('\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8'))中文

因爲Python源代碼也是一個文本文件,因此,當你的源代碼中包含中文的時候,在保存源代碼時,就須要務必指定保存爲UTF-8編碼。當Python解釋器讀取源代碼時,爲了讓它按UTF-8編碼讀取,咱們一般在文件開頭寫上這兩行:

#!/usr/bin/env python 
# -*- coding: utf-8 -*-

第一行註釋是爲了告訴Linux/OS X系統,這是一個Python可執行程序,Windows系統會忽略這個註釋;

第二行註釋是爲了告訴Python解釋器,按照UTF-8編碼讀取源代碼,不然,你在源代碼中寫的中文輸出可能會有亂碼。

格式化

最後一個常見的問題是如何輸出格式化的字符串。咱們常常會輸出相似'親愛的xxx你好!你xx月的話費是xx,餘額是xx'之類的字符串,而xxx的內容都是根據變量變化的,因此,須要一種簡便的格式化字符串的方式。

 

在Python中,採用的格式化方式和C語言是一致的,用%實現,舉例以下:

>>> 'Hello, %s' % 'world' 'Hello, world' >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000) 'Hi, Michael, you have $1000000.'

你可能猜到了,%運算符就是用來格式化字符串的。在字符串內部,%s表示用字符串替換,%d表示用整數替換,有幾個%?佔位符,後面就跟幾個變量或者值,順序要對應好。若是隻有一個%?,括號能夠省略。

常見的佔位符有:%d 整數 %f 浮點數 %s 字符串 %x 十六進制整數

其中,格式化整數和浮點數還能夠指定是否補0和整數與小數的位數:

>>> '%2d-%02d' % (3, 1) ' 3-01' >>> '%.2f' % 3.1415926 '3.14'

若是你不太肯定應該用什麼,%s永遠起做用,它會把任何數據類型轉換爲字符串:

>>> 'Age: %s. Gender: %s' % (25, True) 'Age: 25. Gender: True'

對於Unicode字符串,用法徹底同樣,但最好確保替換的字符串也是Unicode字符串:

>>> u'Hi, %s' % u'Michael' u'Hi, Michael'

有些時候,字符串裏面的%是一個普通字符怎麼辦?這個時候就須要轉義,用%%來表示一個%

>>> 'growth rate: %d %%' % 7 'growth rate: 7 %'

小結

因爲歷史遺留問題,Python 2.x版本雖然支持Unicode,但在語法上須要'xxx'u'xxx'兩種字符串表示方式。

Python固然也支持其餘編碼方式,好比把Unicode編碼成GB2312:

>>> u'中文'.encode('gb2312') '\xd6\xd0\xce\xc4'

但這種方式純屬自找麻煩,若是沒有特殊業務要求,請牢記僅使用Unicode和UTF-8這兩種編碼方式。

在Python 3.x版本中,把'xxx'u'xxx'統一成Unicode編碼,即寫不寫前綴u都是同樣的,而以字節形式表示的字符串則必須加上b前綴:b'xxx'

格式化字符串的時候,能夠用Python的交互式命令行測試,方便快捷。


   

引用1:  http://www.cnblogs.com/dzhanjie/archive/2011/07/07/2100340.html

引用2:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738264643de15c5c4abad47dd9510e3b86286acb8000

引用3:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819196283586a37629844456ca7e5a7faa9b94ee8000

引用4:https://www.cnblogs.com/alex3714/articles/5885096.html

相關文章
相關標籤/搜索