Python入門篇

1.1 Python介紹

1.1.1 Python簡介

 

Python,是一種普遍使用的高級編程語言,屬於通用型編程語言,由吉多·範羅蘇姆(中文名字:龜叔)創造,初版發佈於 1991 年。能夠視之爲一種改良 (加入一些其餘編程語言的優勢,如面向對象) LISPhtml

 

做爲一種解釋型語言,Python 的設計哲學強調代碼的可讀性和簡潔的語法(尤爲是使用空格縮進劃分代碼塊,而非使用大括號或者關鍵詞)。python

 

數據來源:https://www.tiobe.com/tiobe-index/程序員

由上圖可見,Python總體呈上升趨勢,反映出Python應用愈來愈普遍而且也逐漸獲得業內的承認。相比於 C++ JavaPython 讓開發者可以用更少的代碼表達想法。不論是小型仍是大型程序,該語言都試圖讓程序的結構清晰明瞭。web

1.1.2 Python設計哲學與定位

Python的設計哲學是「優雅」、「明確」、「簡單」。shell

Python開發者的哲學是「用一種方法,最好是隻有一種方法來作一件事」,也所以它和擁有明顯我的風格的其餘語言很不同。在設計Python語言時,若是面臨多種選擇,Python開發者通常會拒絕花俏的語法,而選擇明確沒有或者不多有歧義的語法。編程

這些準則被稱爲「Python格言」。在Python解釋器內運行import this能夠得到完整的列表。服務器

>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

1.1.3 Python應用範圍

Web程序:框架

         Python常常被用於Web開發。好比,經過mod_wsgi模塊,Apache能夠運行用Python編寫的Web程序。使用Python語言編寫的Gunicorn做爲Web服務器,也可以運行Python語言編寫的Web程序。less

Python定義了WSGI標準應用接口來協調Http服務器與基於PythonWeb程序之間的溝通。一些Web框架,如DjangoPyramidTurboGearsTornadoweb2pyZopeFlask等,可讓程序員輕鬆地開發和管理複雜的Web程序。編程語言

GUI開發:

         Python自己包含的Tkinter庫可以支持簡單的GUI開發。可是愈來愈多的Python程序員選擇wxPython或者PyQtGUI包來開發跨平臺的桌面軟件。使用它們開發的桌面軟件運行速度快,與用戶的桌面環境相契合。經過PyInstaller還能將程序發佈爲獨立的安裝程序包。

其餘:

         YouTubeGoogleYahoo!NASA都在內部大量地使用PythonOLPC的做業系統Sugar項目的大多數軟件都是使用Python編寫。

1.1.4 Python的種類

1CPython

   Python的官方版本,使用C語言實現,使用最爲普遍,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),而後運行在Python虛擬機上。

1 Jython

   PythonJava實現,Jython會將Python代碼動態編譯成Java字節碼,而後在JVM上運行。

3IronPython

  PythonC#實現,IronPythonPython代碼編譯成C#字節碼,而後在CLR上運行(與Jypthon相似)。

4PyPy(特殊)

 Python實現的Python,將Python的字節碼字節再編譯成機器碼。

5RubyPython,Brython ....

注意:本文中都的爲Python 3.6.2 版本:https://www.python.org/downloads/release/python-362/

關於Python環境部署能夠參考:http://www.runoob.com/python/python-install.html

1.2 Python的語法

Python的設計目標之一是讓代碼具有高度的可閱讀性。它設計時儘可能使用其它語言常用的標點符號和英文單字,讓代碼看起來整潔美觀。由於Python是動態語言,它不像其餘的靜態語言如CPascal那樣須要書寫聲明語句。

1.2.1 縮進語法

Python開發者有意讓違反了縮進規則的程序不能經過解釋,以此來強迫程序員養成良好的編程習慣,也方便全部人查找和閱讀。例如:

if age < 21:
    print("你不能買酒。")
    print("不過你能買口香糖。")
print("這句話處於if語句的外面。")

 

若是想要相似於執行shell腳本同樣執行python腳本,例: ./clsn.py ,那麼就須要在 clsn.py文件的頭部指定解釋器,以下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
if age < 21:
    print("你不能買酒。")
    print("不過你能買口香糖。")
print("這句話處於if語句的外面。")

         注:上述例子爲Python 3.0以上版本的代碼。

1.2.2 變量說明

變量定義的規則:

1、變量名只能是 字母、數字或下劃線的任意組合

2、變量名的第一個字符不能是數字

3、如下關鍵字不能聲明爲變量名

['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']

4、變量的定義要具備可描述性。

1.2.3 語句和控制流

語句類型

說明

if語句

當條件成立時運行語句塊。常常與else, elif(至關於else if)配合使用。

for語句

遍列列表、字符串、字典、集合等迭代器,依次處理迭代器中的每一個元素。

while語句

當條件爲真時,循環運行語句塊。

try語句

except, finally, else配合使用處理在程序運行中出現的異常狀況。

class語句

用於定義類型。

def語句

用於定義函數和類型的方法。

pass語句

表示此行爲空,不運行任何操做。

assert語句

用於程序調適階段時測試運行條件是否知足。

with語句

Python2.6之後定義的語法,在一個場景中運行語句塊。好比,運行語句塊前加鎖,而後在語句塊運行結束後釋放鎖。

yield語句

在迭代器函數內使用,用於返回一個元素。自從Python 2.5版本之後。這個語句變成一個運算符。

raise語句

拋出一個異常。

import語句

導入一個模塊或包。經常使用寫法:from module import name, import module as name, from module import name as anothername

1.2.4 程序交互

input進行交互

#!/usr/bin/env python
# -*- coding: utf-8 -*-
  
# 將用戶輸入的內容賦值給 name 變量
name = input("請輸入用戶名:")
  
# 打印輸入的內容
print(name)

可讓用戶輸入多個信息,以下

#!/usr/bin/env python
# -*- coding: utf-8 -*-
name = input("What is your name?")
age = input("How old are you?")
hometown = input("Where is your hometown?")
print("Hello ",name , "your are ", age , "years old, you came from",hometown)

1.2.5 數據類型與動態類型

Python內置多種數據類型。下面這個列表簡要地描述了Python內置數據類型(適用於Python 3.x):

類型

描述

例子

str

一個由字符組成的不可更改的有序列。在Python 3.x裏,字符串由Unicode字符組成。

'Wikipedia'

"Wikipedia"

"""Spanning

multiple

lines"""

bytes

一個由字節組成的不可更改的有序列。

b'Some ASCII'

b"Some ASCII"

list

能夠包含多種類型的可改變的有序列

[4.0, 'string', True]

tuple

能夠包含多種類型的不可改變的有序列

(4.0, 'string', True)

set, frozenset

與數學中集合的概念相似。無序的、每一個元素惟一。

{4.0, 'string', True}

frozenset([4.0, 'string', True])

dictmap

一個可改變的由鍵值對組成的無序列。

{'key1': 1.0, 3: False}

int

精度不限的整數

42

float

浮點數。精度與系統相關。

3.1415927

complex

複數

3+2.7j

bool

邏輯值。只有兩個值:真、假

True

False

除了各類數據類型,Python語言還用類型來表示函數、模塊、類型自己、對象的方法、編譯後的Python代碼、運行時信息等等。所以,Python具有很強的動態性。

1.2.6 運算符

計算機能夠進行的運算有不少種,可不僅加減乘除這麼簡單,運算按種類可分爲算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,今天咱們暫只學習算數運算、比較運算、邏輯運算、賦值運算

算數運算

如下假設變量:a=10b=20

比較運算

如下假設變量:a=10b=20

賦值運算

如下假設變量:a=10b=20

邏輯運算

         關於邏輯運算

在沒有()的狀況下not 優先級高於 andand優先級高於or,即優先級關係爲( )>not>and>or,同一優先級從左往右計算。

in,not in :

判斷子元素是否在原字符串(字典,列表,集合)中:

例如:

#print('喜歡' in 'dkfljadklf喜歡hfjdkas')
#print('a' in 'bcvd')
#print('y' not in 'ofkjdslaf')

         常見的佔位符有:

1.3 流程控制語句

1.3.1 流程控制之--if

假如把寫程序比作走路,那咱們到如今爲止,一直走的都是直路,還沒遇到過度叉口,想象現實中,你遇到了分叉口,而後你決定往哪拐必然是有所動機的。你要判斷那條岔路是你真正要走的路,很簡單,只須要在程序裏預設一些條件判斷語句,知足哪一個條件,就走哪條岔路。這個過程就叫流程控制。

單分支

if 條件:
    知足條件後要執行的代碼

雙分支

"""
if 條件:
    知足條件執行代碼
else:
    if條件不知足就走這段
"""
MemInfo = 48
if MemInfo > 95 :
    print("內存即將用光")
else:
    print("沒事,放心用!")

多分支

if 條件:
    知足條件執行代碼
elif 條件:
    上面的條件不知足就走這個
elif 條件:
    上面的條件不知足就走這個
elif 條件:
    上面的條件不知足就走這個    
else:
    上面全部的條件不知足就走這段

示例:猜猜個人年齡

age_of_clsn = 24
guess = int(input(">>:"))
if guess > age_of_clsn :
    print("猜的太大了,往小裏試試...")
elif guess < age_of_clsn :
    print("猜的過小了,往大里試試...")
else:
    print("恭喜你,猜對了...")

1.3.2 流程控制之--while循環

基本while循環

while 條件:
     
    # 循環體
     
    # 若是條件爲真,那麼循環體則執行
    # 若是條件爲假,那麼循環體不執行

循環停止語句

         若是在循環的過程當中,由於某些緣由,你不想繼續循環了,怎麼把它停止掉呢?這就用到break continue 語句

break用於徹底結束一個循環,跳出循環體執行循環後面的語句

continuebreak有點相似,區別在於continue只是終止本次循環,接着還執行後面的循環,break則徹底終止循環。

示例:

         以前猜年齡的代碼運行一次使用一次,但稍加修改就能一自運行。

age_of_clsn = 24
while True:
    guess = int(input(">>:"))
    if guess > age_of_clsn:
        print("猜的太大了,往小裏試試...")
    elif guess < age_of_clsn:
        print("猜的過小了,往大里試試...")
    else:
        print("恭喜你,猜對了...")
        break

1.3.3 格式化輸出

現有一練習需求,問用戶的姓名、年齡、工做、愛好 ,而後打印成如下格式

------------ info of Alex Li -----------
Name  : CLSN
Age   : 24
job   : Linux Ops
Hobbie: girl
------------- end -----------------

         這樣的格式如何輸出呢?

name = input("Name:")
age = input("Age:")
job = input("Job:")
hobbie = input("Hobbie:")
info = '''
------------ info of %s ----------- #這裏的每一個%s就是一個佔位符,本行的表明 後面拓號裏的 name 
Name  : %s  #表明 name 
Age   : %s  #表明 age  
job   : %s  #表明 job 
Hobbie: %s  #表明 hobbie 
------------- end -----------------
''' %(name,name,age,job,hobbie)  # 這行的 % 號就是 把前面的字符串 與拓號 後面的 變量 關聯起來 
print(info)

         在格式化輸出裏面,怎麼表示%?

msg = "我是%s,年齡%d,目前工做進度爲80%%"%('clsn',24)
print(msg)

         使用%% % 轉義.

1.4 編碼說明

字符

ASCII

Unicode

utf-8

GBK

英文

1個字節

2-4個字節

1個字節

1個字節

中文

x

2-4個字節

3個字節

2個字節

其餘

x

2-4個字節

2個字節

x

         : 1個字節 = 8 bit

1.5 參考文獻

[1]  https://zh.wikipedia.org/wiki/Python

[2]  http://www.cnblogs.com/jin-xin/articles/7459977.html

[3]  http://www.cnblogs.com/wang-yc/articles/6419907.html

[4]  http://www.runoob.com/python/python-install.html

[5]  http://www.javashuo.com/article/p-gxrlhnsm-p.html

 個人博客即將入駐「雲棲社區」,誠邀技術同仁一同入駐。

相關文章
相關標籤/搜索