歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下Python的安裝以及注意事項

Linux下Python的安裝以及注意事項

日期:2017/2/28 13:56:44   编辑:Linux教程

Linux的yum依賴自帶Python,為防止錯誤,這裡我們再安裝一個Python

首先查看默認Python版本

python -V

1、安裝gcc,用於編譯Python源碼

[root@Python~]# yum install gcc

2、下載源碼,https://www.python.org/ftp/python ,解壓並切換到源碼文件

3、編譯安裝

[root@Python tools]# tar xf Python-2.7.10.tar.xz

[root@Python tools]# ll

total 11968

drwxr-xr-x 17 1000 1000 4096 May 24 00:09 Python-2.7.10

-rw-r--r-- 1 root root 12250696 May 24 00:20 Python-2.7.10.tar.xz

[root@Python tools]# cd Python-2.7.10

[root@Python Python-2.7.10]# ./configure && make && make install

4、查看版本

[root@Python Python-2.7.10]# /usr/local/bin/python2.7 -V

Python 2.7.10

[root@Python Python-2.7.10]#

5、修改版本morePython版本

[root@Python Python-2.7.10]#mv /usr/bin/python /usr/bin/python2.6

[root@Python Python-2.7.10]#ln -s /usr/local/bin/python2.7 /usr/bin/python

6、防止yum執行異常,修改yum使用的Python版本

[root@Python Python-2.7.10]#vim /usr/bin/yum

將頭部#!/usr/bin/python 改為 #!/usr/bin/python2.6

7、第一個Python代碼

print ‘hello world!’

>>> print 'hello world'

hello world

>>>

8、字符編碼

#-*- coding:utf-8 -*-

約定字符編碼都用上面的"# -*- coding:utf-8 -*-"

#!/usr/bin/env python

#-*- coding:utf8 -*-

print 'hello world!'

print '你好,世界!'

[root@Python scripts]# ./hello.py

hello world!

你好,世界!

或者

[root@Python scripts]# python hello.py

hello world!

你好,世界!

總結:Python默認編碼是ASCII,是用一個8位的二進制數字表示所有英文和特殊符號,即ASCII最多有256(2的8次方)種可能,因為沒有考慮到中文,所以只能滿足英文,如果我們要考慮中文,這裡就采用utf8,(了解utf8可以將utf8與Unicode進行對比,他們的關系可以參考:http://alexiter.iteye.com/blog/1533109),在utf8中所有的英文還是用SACII碼的形式來存儲,中文就用3個字節存儲,這樣就可以避免存儲空間的浪費。

提示:Python2.7是Python2.0的最後一個版本

9、注釋:

1)單行注釋用"#"號

比如:

[root@Python scripts]# cat hello.py

#!/usr/bin/env python

#-*- coding:utf8 -*-

#print 'hello world!'

#print '你好,世界!

以上是單行注釋,其中"

#!/usr/bin/env python "和“#-*- coding:utf8 -*-”是特殊的注釋

2)多行注釋

[root@Python scripts]# cat hello.py

#!/usr/bin/env python

#-*- coding:utf8 -*-

print 'hello world!'

print '你好,世界!'

"""

該Python腳本是用來測試Python語法功能的,

請不要用於正式環境

"""

三引號裡面的部分就是多行注釋一般用來說明腳本中某段代碼的功能

10、獲取腳本後面的參數 sys.argv

Python有大量的模塊,從而使得開發Python程序非常簡潔。類庫有包括三中:

•Python內部提供的模塊

•業內開源的模塊

•程序員自己開發的模塊

該模塊名字是sys,是Python內置的模塊

[root@Python scripts]# vim hello.py

#!/usr/bin/env python

#-*- coding:utf8 -*-

import sys

print sys.argv

print 'hello world!'

print '你好,世界!'

在hello.py後面添加參數 localhost:8001

[root@Python scripts]# python hello.py localhost:8001

['hello.py', 'localhost:8001'] #---->獲取的兩個參數hello.py和localhost:8001,並且將兩個參數存放在一個集合中,該集合在這裡叫做列表:['hello.py', 'localhost:8001']

hello world!

你好,世界!

11、字節碼

運行.py文件後,同級目錄下會出現很多.pyc後綴的文件,該文件就是Python解釋器將Python腳本編譯之後產生的字節碼文件

提示:Python代碼經過編譯可以生成字節碼文件(即:.pyc後綴的文件),字節碼也可以反編譯成Python代碼文件(用反編譯器),如果代碼經過Python編譯器生成字節碼之後,再將Python代碼該文件刪除,後面還是可以繼續運行,如果Python代碼內容重新更新,那麼再進行調用運行.pyc字節碼時候就要重新編譯Python代碼文件而成新的字節碼

12、Python的變量

變量名的要求:

1)變量名中只能是字母(大小寫)、下劃線、數字三種

2)變量名開頭不能是數字

1name="rick" 2name="bobo"這些都是不符合規范的,

3)不能使用系統的關鍵字(系統已經內置了一些關鍵字)

>>> import keyword

>>> keyword.kwlist;

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

>>>

以上單詞即為系統內置關鍵字,在定義變量時不要用他們作為變量名字

查看某個變量是否是關鍵字

>>> keyword.iskeyword ('待查詢的字符串')

變量賦值:

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

name1 = "wupeiqi"

name2 = "alex"

#!/usr/bin/env python

# -*- coding: utf-8 -*-

name1 = "wupeiqi"

name2 = name1

變量賦值的實質其實就是用某個別名將指針指向內存中某一塊區域的存儲的數據庫,這裡兩個例子的別名依次為name1和name2,分別指向的內存中的對應位置的數據塊(wupeiqi,alex)

在第二種情況變量復制中,如果修改name1的值,name2值是否會變化呢?這裡我們通過實驗來證明:

>>> name1="wupeiqi"

>>> name2=name1

>>> name2

'wupeiqi'

>>> name1="alex"

>>> name2

'wupeiqi'

>>> name1

'alex'

>>>

通過以上實驗,得出結果,變量name2的值在變量name1發生變化時並不會隨著name1而變化,因為變量的實質是存儲在內存中數據的別名,而別名是通過指針指向內存中的數據塊,當變量name1賦值為"alex"時,其實是將name1的指針指向內存中新開辟的數據塊“alex”,而變量name2仍然指向原來的數據塊“wupeiqi”,所以變量name2的值沒有發生變化。

在Python中,如果要用字符串相加,即:"hello"+"sb"+"alex"這樣的形式,

其實是在內存中一次開辟空間"hello"、“hello”+“sb”、"hello"+"sb"+“alex”等空間,而最終有用的空間為“hello”+“sb”+“alex”這一塊,而其他的則內存空間處於浪費狀態,這裡就要用Python的虛擬機垃圾回收功能,而對於Python、java這些高級語言來說,對於程序員一般不用去關心垃圾回收,這些都自動交給了對應的虛擬機來完成。

另外對於:

name1="wupeiqi"

name2="wupeiqi"

實質上name1和name2指向內存中的兩個數據塊中的,內容都為“wupeiqi”,但是有人說id("name1")和id(name2)地址空間一樣,其實Python相對於C語言而言,對內存尋址做了優化,對於常用的而且數據相同的內容都放在同一個地址空間內(或者地址段內),但是當數據長度達到一定的數量級之後,雖然內容相同但是內存地址也就會不相同,因為Python有一個內存地址的緩沖區,可以理解為如果數據相同而且數據長度小於等於內存緩沖區的長度,那麼他們的內存地址表現為相同,否則就不同;這裡可以用兩個列子來說明:

>>> name1="wupeiqi"

>>> name2="wupeiqi"

>>> id(name1)

140084306598864

>>> id(name2)

140084306598864

>>> a=142584756214225512155212464431641346573.

>>> b=142584756214225512155212464431641346573.

>>> id(a)

25671328

>>> id(b)

25671352

>>>

如上例所述,因為name1和name2指向的數據塊長度在Python地址空間緩沖區內,所以name1和name2的地址相同,而a和b的值已經超出了Python地址空間的緩沖區長度大小,所以顯示出兩個地址不同,其實如上例所示的兩個變量賦值相同,其實質就是在內存中開辟兩塊完整相同的數據塊進行存儲他們,而不是一塊數據指向兩個變量。

下面關於Python的文章您也可能喜歡,不妨看看:

Python:在指定目錄下查找滿足條件的文件 http://www.linuxidc.com/Linux/2015-08/121283.htm

Python2.7.7源碼分析 http://www.linuxidc.com/Linux/2015-08/121168.htm

無需操作系統直接運行 Python 代碼 http://www.linuxidc.com/Linux/2015-05/117357.htm

CentOS上源碼安裝Python3.4 http://www.linuxidc.com/Linux/2015-01/111870.htm

《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm

《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm

Python腳本獲取Linux系統信息 http://www.linuxidc.com/Linux/2013-08/88531.htm

在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm

Python 語言的發展簡史 http://www.linuxidc.com/Linux/2014-09/107206.htm

Python 的詳細介紹:請點這裡
Python 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved