python安裝、數據類型和變量

2018.06.06
1.1爲什麼要學習python
學習方法:
邊看邊做不能只看不做
筆記要記錄詳細

1.2 python的安裝

python是跨平臺的語言,linux、windows及mac都可以使用
官網:www.python.org
學習使用的較新版本,使用python3的
windows上的安裝過程,安裝在C:\Python36目錄下,然後點擊Install開始安裝
python安裝、數據類型和變量
在windows中添加python的環境變量,如下:
計算機或我的電腦右擊打開屬性--系統高級設置
python安裝、數據類型和變量
添加python的安裝路徑,可在用戶或系統變量中添加,加入後確認即可
python安裝、數據類型和變量
打開windows的CMD,輸入python進入python,輸入exit()退出
python安裝、數據類型和變量
linux中安裝python
如果本機安裝了python2,儘量不要管他,使用python3運行python腳本就好,因爲可能有程序依賴目前的python2環境

比如yum!!!!!教訓- -刪除了python2安裝目錄,導致yum不能使用,由於懶得解決,不去修復yum,廢了一個虛擬機

  1. 安裝依賴環境
    yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
    sudo yum -y install gcc gcc-c++ 
    sudo yum -y install zlib 
    sudo yum -y install libffi-devel 

    2.下載Python3,官網https://www.python.org/downloads/

3.安裝python3

我個人習慣安裝在/usr/local/python3(具體安裝位置看個人喜好)
創建目錄:

mkdir -p /usr/local/python3

解壓下載好的Python-3.x.x.tgz包(具體包名因你下載的Python具體版本不不同⽽而不不同,如:我下載的是
Python3.6.1.那我這里就是Python-3.6.1.tgz)

tar -zxvf Python-3.6.1.tgz

4.進入解壓後的目錄,編譯安裝。

cd Python-3.6.1
./configure --prefix=/usr/local/python3

編譯安裝後提示執行./configure --enable-optimizations,執行構建穩定優化的環境

config.status: creating Modules/ld_so_aix
config.status: creating pyconfig.h
creating Modules/Setup
creating Modules/Setup.local
creating Makefile

If you want a release build with all stable optimizations active (PGO, etc),
please run ./configure --enable-optimizations

[root@localhost Python-3.7.0]# ./configure --enable-optimizations
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for python3.7... no
checking for python3... no
checking for python... python

make之前編譯安裝pip和ipython
在pypi.python.org官網下載setuptools庫和pip
安裝setuptools

tar -zxvf setuptools-*.*.tar.gz
cd setuptools-*.*
python3 setup.py build
python3 setup.py install

報錯: RuntimeError: Compression requires the (missing) zlib module
  我們需要在linux中安裝zlib-devel包,進行支持。
  yum install zlib-devel
  需要對python3.* 進行重新編譯安裝。
  cd python3.*.1
  make && make install
  又是漫長的編譯安裝過程。
  重新安裝setuptool
  python3 setup.py build
  python3 setup.py install

安裝pip的支持擴展

cd pip-*.0.*
python3 setup.py build
python3 setup.py install
如果沒有意外的話,pip安裝完成。
如果沒有搞好環境的話,會碰見親切的報錯:

pip3 install paramiko

報這個錯

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
然後開始進行如下操作

yum install openssl
yum install openssl-devel

make install 或者 make && make install 進行最後安裝

Looking in links: /tmp/tmptbpyw1pv
Requirement already up-to-date: setuptools in /usr/local/lib/python3.7/site-packages (39.0.1)
Requirement already up-to-date: pip in /usr/local/lib/python3.7/site-packages (10.0.1)

5.建立python3命令的軟鏈接

ln -s /usr/local/python3/bin/python3 /usr/bin/python3

6.並將/usr/local/python3/bin加入PATH

# vim /etc/profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/local/python3/bin
export PATH

 按ESC,輸入:wq回車退出。
 修改完記得執行行下面的命令,讓上一步的修改生效:

 [root@localhost Python-3.7.0]# source /etc/profile
[root@localhost Python-3.7.0]# python3
Python 3.7.0 (default, Jul  4 2018, 14:06:09) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
重新讀取系統環境配置變量後能夠正常使用python3來進入python終端環境了

安裝python3.7的pip和ipython工具

升級pip
pip3 install --upgrade pip
安裝ipython,可以使用國內源
python3 -m easy_install -i 國內源/simple/地址 ipython

安裝系統python2默認ipython命令工具
python支持補全,需要安裝ipython的軟件包,需要安裝python-pip,安裝python-pip需要epel擴展
yum install -y epel-release 安裝擴展
yum install -y python-pip 安裝python-pip

[root@localhost ~]# pip install ipython
Collecting ipython
  Downloading https://files.pythonhosted.org/packages/ee/01/2a85cd07f5a43fa2e86d60001c213647252662d44a0c2e3d69471a058f1b/ipython-6.4.0.tar.gz (5.1MB)
    100% |████████████████████████████████| 5.1MB 101kB/s 
    Complete output from command python setup.py egg_info:

    IPython 6.0+ does not support Python 2.6, 2.7, 3.0, 3.1, or 3.2.
    When using Python 2.7, please install IPython 5.x LTS Long Term Support version.
    Beginning with IPython 6.0, Python 3.3 and above is required.

    See IPython `README.rst` file for more information:

        https://github.com/ipython/ipython/blob/master/README.rst

    Python sys.version_info(major=2, minor=7, micro=5, releaselevel='final', serial=0) detected.
    Your pip version is out of date, please install pip >= 9.0.1. pip 8.1.2 detected.

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-dXTgRG/ipython/
You are using pip version 8.1.2, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.安裝後提示有新版本可升級
[root@localhost ~]# pip install --upgrade pip       執行pip install --upgrade pip升級pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 180kB/s 
Installing collected packages: pip
  Found existing installation: pip 8.1.2
    Uninstalling pip-8.1.2:
      Successfully uninstalled pip-8.1.2
Successfully installed pip-10.0.1

安裝pip install ipython

安裝中報錯
[root@localhost ~]# pip install ipython
Collecting ipython
  Using cached https://files.pythonhosted.org/packages/52/19/aadde98d6bde1667d0bf431fb2d22451f880aaa373e0a241c7e7cb5815a0/ipython-5.7.0-py2-none-any.whl
Requirement already satisfied: pygments in /usr/lib64/python2.7/site-packages (from ipython) (2.2.0)
Requirement already satisfied: decorator in /usr/lib/python2.7/site-packages (from ipython) (3.4.0)
Requirement already satisfied: backports.shutil-get-terminal-size; python_version == "2.7" in /usr/lib/python2.7/site-packages (from ipython) (1.0.0)
............
    ----------------------------------------
Command "/usr/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-aBmrn9/scandir/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-hoCRRX/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-aBmrn9/scandir/

根據視頻使用pip install ipython==3.2.3找到這個版本進行安裝

[root@localhost ~]# pip install ipython==3.2.3
Collecting ipython==3.2.3
  Downloading https://files.pythonhosted.org/packages/a8/be/4903b69c5dfb06e4537adbe4b5497048d303258c6d439466a648a0a05be9/ipython-3.2.3-py2-none-any.whl (3.4MB)
    100% |████████████████████████████████| 3.4MB 77kB/s 
Installing collected packages: ipython
Successfully installed ipython-3.2.3
[root@localhost ~]# pip list
Package                            Version
---------------------------------- -------
backports.shutil-get-terminal-size 1.0.0  
backports.ssl-match-hostname      3.5.0.1
configobj                          4.7.2  
decorator                          3.4.0  
enum34                            1.1.6  
iniparse                          0.4    
ipaddress                          1.0.16 
ipython                            3.2.3  
ipython-genutils                  0.2.0  
perf                              0.1    
pip                                10.0.1 
pycurl                            7.19.0 
Pygments                          2.2.0  
pygobject                          3.14.0 
pygpgme                            0.3    
pip list查看安裝好的插件

使用ipython進入python環境使用

[root@localhost ~]# ipython
Python 2.7.5 (default, Nov  6 2016, 00:28:07) 
Type "copyright", "credits" or "license" for more information.

IPython 3.2.3 -- An enhanced Interactive Python.
?        -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?  -> Details about 'object', use 'object??' for extra details.

In [1]: print "holle world"    雙擊tab鍵補全
holle world

In [2]:exit()
[root@localhost ~]# 

安裝這裏我也搞的很迷糊,因爲第一次安裝完使用ipython發現python版本是2.7的,不是我想要的3版本,於是自己動手安裝,碰見不少坑文檔記錄的也不是很全,僅供參考

1.3 python的文件類型

使用方式:一、進入命令行交互模式,二、創建文件,在文件中寫入語句
文件中寫入:


[root@localhost src]# vim python.py
#!/usr/bin/python     使用python的命令解釋器
print 'holle world'
~                                                  
~                                                 
~          
[root@localhost src]# python python.py 
holle world

字節代碼,通過compile模塊編譯後生成的後綴名爲pyc的文件

[root@localhost src]# cat 1.py 
#!/usr/bin/python
import py_compile
py_compile.compile('2.py')          2.py是同目錄下的另一個文件
[root@localhost src]# python 1.py 
[root@localhost src]# ls
1.py  2.py  2.pyc
cat查看或編輯2.pyc文件,會顯示一些亂碼,使源碼不可見
[root@localhost src]# python 2.pyc 
holle world    
[root@localhost src]# python -O -m py_compile 2.py       字節代碼pyo
[root@localhost src]# ls
1.py  2.py  2.pyc  2.pyo
同2.pyc文件一樣,cat查看或編輯2.pyo文件,會顯示一些亂碼,使源碼不可見
[root@localhost src]# python 2.pyo
holle world

1.4 python變量

變量是計算機內存中的一個存儲數值,變量可以存儲規定範圍內的值,且值可以改變
python下變量是對一個數據的引用
變量命名規則
以字母、數字、下劃線組合
不能以數字開頭
不可以使用關鍵字
變量的賦值
a = 1
id (a) id是查看變量在內存中的地址
python運算符
賦值、算術、關係、邏輯運算符
表達式是將不同數據(包括變量、函數)用運算復航按一定規則連接起來的一種式子
python變量賦值

In [1]: a = 123
In [2]: id(a)
Out[2]: 12392528
In [3]: a = 456
In [4]: id(a)
Out[4]: 22193432
In [5]: x = 'abc'       
In [6]: x = abc         對字符串賦值要使用引號聲明,否則會將這個abc識別爲一個變量
---------------------------------------------------------------------------
NameError                                Traceback (most recent call last)
<ipython-input-6-3887d47efca7> in <module>()
----> 1 x = abc
NameError: name 'abc' is not defined
In [7]:
type (變量)  查看變量的類型,python會對數值自動歸類類型
In [26]: x = 2

In [27]: type (x)
Out[27]: int

In [28]: x = '2'

In [29]: type (x)
Out[29]: str

In [30]:

python賦值運算符

= :   x = 3 , y = 'abcd'
+= :  x += 2
-= :  x -= 2
*= :  x *= 2
/= :  x /= 2
%= :  x %= 2

python算術運算符
+ 加運算 - 減運算 * 乘運算 / 除運算,除數加上小數點可以取得一個精確的浮點結果 // 整除 % 除運算取餘<br/>** 運算乘方

In [30]: 3 + 4     加運算
Out[30]: 7

In [31]: 5 - 3     減運算
Out[31]: 2

In [32]: 3 * 4    乘運算
Out[32]: 12 

In [33]: 4 / 3    除運算
Out[33]: 1

In [34]: 4.0 / 3   除運算,除數加上小數點可以取得一個精確的浮點結果
Out[34]: 1.3333333333333333

In [35]: 10 // 3   整除
Out[35]: 3

In [36]: 10 % 3    除運算只取餘數
Out[36]: 1

In [37]: 2 ** 3    乘方運算,對結果反覆乘以3,這裏乘運算了2次,乘公式爲:2*2*2   
Out[37]: 8

關係運算符,返回布爾值false 和true結果。true成立,false不成立

大於
< 小於
= 大於或等於
<= 小於或等於
== 等於
!= 不等於


In [38]: 1 &gt; 2    1大於2
Out[38]: False

In [39]: 1 < 2 1小於2
Out[39]: True

In [40]: 1 >= 2 1大於或等於2
Out[40]: False

In [41]: 1 >= 1 1大於或等於1
Out[41]: True

In [42]: 1 <= 2 1小於或等於2
Out[42]: True

In [43]: 1 <= 1 1小於或等於1
Out[43]: True

In [44]: 1 == 1 1等於1
Out[44]: True

In [45]: 1 != 2 1不等於2
Out[45]: True

邏輯運算符
and  邏輯與: true and false    兩個表達式都成立返回true,有一個不成立就返回false
or 邏輯或 : false and true     兩個表達式只要有一個成立就返回true
not 邏輯非  :  not true      表達式不成立返回true

運算符排列,從下到上優先級越來越高,一行中越往右優先級越高
![](http://i2.51cto.com/images/blog/201807/13/39c7eb695db492a4ff9634ca58b5c470.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
從鍵盤輸入讀取數值 

input("Please input:")
一個小的計算腳本示例:
[root@localhost src]# cat jisuan.py
#!/usr/bin/python
num1 = input("Please a number: ")
num2 = input("Please a number: ")

print "%s + %s = %s" % (num1, num2, num1+num2)
print "%s - %s = %s" % (num1, num2, num1-num2)
print "%s %s = %s" % (num1, num2, num1num2)
print "%s / %s = %s" % (num1, num2, num1/num2)

[root@localhost src]# python jisuan.py
Please a number: 3
Please a number: 4
3 + 4 = 7
3 - 4 = -1
3 * 4 = 12
3 / 4 = 0

1.5 Python的數值和字串符

python數據類型
數值   字串符   列表   元組  字典
數值類型又分爲整型  長整型  浮點型  複數型
整數類型:

In [1]: a = 3
In [2]: type(a)
Out[2]: int
整數類型範圍 -2147483648 到 2147483648

長整型:
In [4]: a = 99999999999999999999999999999999999
In [5]: type (a)
Out[5]: long

浮點數類型:
In [6]: 3e+6
Out[6]: 3000000.0
In [7]: type(3e+6)
Out[7]: float
In [8]: 3.0/2
Out[8]: 1.5
In [9]: type(3.0/2)
Out[9]: float

複數類型:
In [10]: a = 34j
In [11]: type(a)
Out[11]: complex

字符串類型,三種引號模式:
a = 'abc'
a = "abc"
a = '''abc'''
三引號有表示註釋的意思,也可以代替\n的換行符
In [18]: a = '''holle
....: wrold'''

In [19]: print a
holle
wrold

索引與切片操作,定義a 的變量爲123456,操作取出其中某些單獨的數字組合
In [20]: a = '123456'

In [21]: a
Out[21]: '123456'

In [22]: a[1] 從0位開始取值,0是數值1,1是數值2,以此類推
Out[22]: '2'

In [23]: a[0]
Out[23]: '1'

In [24]: a[5]
Out[24]: '6'

In [25]: a[0]+a[3]
Out[25]: '14'

In [26]: a[0:4] 整數取值跟字符串有些不同
Out[26]: '1234'

字符串引索
In [27]: b = 'abcde'

In [28]: b [0:2] 字符串引索時0表示開始時的值,引索到結束時的值需要+1,如取出abc兩個字符表示[0:3]
Out[28]: 'ab'

In [29]: b [-1] -1表示字符串中最後一個值,這裏是e
Out[29]: 'e'

In [30]: b [:3] :表示省去左邊的引索匹配,後面跟整數表示取出多少個字符串,不寫整數表示取值所有
Out[30]: 'abc'

In [31]: b [1:] :冒號左邊跟整數表示省略左邊的多少個字符,右邊不跟整數表示取出所有,正整數和負整數表達的結果基本一致。如冒號右邊的-1和1的取出結果都是bcd
Out[31]: 'bcde'

In [32]: b [1:-1] :冒號左邊跟整數表示省略左邊的多少個字符,右邊不跟負整數表示取出所有,這裏負整數倒敘,這裏最大取值-1,如果想得出bcde結果,則後面不跟任何數值
Out[32]: 'bcd'

In [36]: b[-4:-2]
Out[36]: 'bc'

In [37]: b[-4:-1]
Out[37]: 'bcd'

In [38]: b[-3:-5:-1] -3從右往左數實際上的第二個,-5從右往左數實際上的第三個,-1表示從右到左的排序 ,倒敘位置 ed[c][b]a
Out[38]: 'cb'

In [52]: b[::2] 雙冒號表示步長值,每隔兩步取一個值
Out[52]: 'ace'

In [53]: b[::-2] 倒敘的從右往左取值,每隔兩步取出一個字符串
Out[53]: 'eca'



整理很亂,基本上都是操作一遍的結果,按操作實踐下理解一下其中意思
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章