1. 程式人生 > >python基礎概述

python基礎概述

gcc-c++ 區別 不存在 nag scrip 用c語言實現 onf 下載 Opens

1、python簡介

python誕生於1989年,創始人 吉多·範羅蘇姆(Guido van Rossum)。python是一種 C和shell 之間,功能全面,易學易用,可拓展的語言。
?
如下是最新的TIOBE排行榜(https://www.tiobe.com/tiobe-index )
技術分享圖片
?
現在,python主要應用於web開發(Django框架, Tornado框架,flask,bottle),網絡編程(支持高並發的Twisted網絡框架),爬蟲,雲計算,人工智能,遊戲開發,金融分析,還有就是運維開發,現在python是每個運維工程師必須掌握的開發語言 之一 ~~

2、編譯型語言和解釋型語言

編譯型語言

編譯型語言需要有專門的編譯器,能夠將代碼 針對特定的平臺(操作系統)編譯成機器碼,然後是鏈接過程,把各個模塊的機器碼和依賴庫連起來生成可執行文件。
?
優點:編譯器在預編譯過程能夠對代碼進行優化。編譯只需要進行一次,生成的可執行文件就可以在特定的平臺脫離語言環境獨立運行,運行效率高。
缺點:不同的平臺之間移植存在問題,需要根據不同的平臺編譯多個可執行文件。編譯完成後,若需要修改,就要重新編譯整個模塊。
?
代表語言有 C、C++、Object-C.....


解釋型語言

解釋型語言不需要事先編譯,在運行過程中由解釋器逐行解釋,然後運行。
?
優點:良好的平臺兼容性,只要有解釋器,相同的代碼就可以在不同的平臺上運行

缺點:相比於編譯型語言,運行速度較慢。
?
代表語言有 python、ruby、php、JavaScript、Erlang
?

Tip:java屬於混合型語言,java需要編譯之後才能運行,但是其編譯後,並不是像C,C++語言那樣編譯成機器語言,而是編譯成與平臺無關的字節碼.class文件,字節碼文件不能直接運行於操作系統之上,需要被java虛擬機翻譯成本地的機器碼後才能執行,而這個過程是讀取一條指令,然後翻譯,最後執行,翻譯性的過程。

python屬於解釋型語言,當執行python程序時,python解釋器先將源代碼轉換為字節碼,然後再由python解釋器執行這些字節碼,每一次的運行都是這樣的一個過程。相比於編譯型語言,每一次的執行都多出了編譯、鏈接的過程,速度稍慢,但是這樣更易於代碼移植,且不用擔心程序的編譯,庫的鏈接加載等問題~

?
python提供了編譯的方法,可以先將python程序編譯成字節碼存儲下來,在運行時直接運行字節碼文件,這是出於對效率的考慮。python程序一般的運行,產生的字節碼不會保留下來,只有在import導入py文件時,才會產生pyc字節碼文件,並在運行時,替代原文件直接運行~

3、Python解釋器

Python的解釋器有好多種,具體的分類如下:

  • Cpython
    Python的官方版本,也是最常用的版本,使用C語言實現,CPython實現將源文件(py文件)轉換成字節碼文件(pyc文件),然後執行字節碼文件。
  • Jyhton
    Python的Java實現,Jython會將Python代碼動態編譯成Java字節碼,然後在JVM上運行。
  • IronPython
    Python的C#實現,IronPython將Python代碼編譯成C#字節碼,然後在CLR上運行。(與Jython類似)
  • PyPy(特殊)
    Python實現的Python,將Python的字節碼字節碼再編譯成機器碼。
  • RubyPython、Brython ...
    ?

    4、python2和python3

    Python的3版本,常被稱為Python 3000。相對於Python的早期版本,這是一個較大的升級。為了不帶入過多的累贅,Python 3.0在設計的時候沒有考慮向下兼容。早期Python版本的程式都無法在Python 3.0上正常執行。
    Python 2.6作為一個過渡版本,基本使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,允許使用部分Python 3.0的語法與函數。

總的來說 Python3 比 2.x 做了很多的改進,若是開發新的項目,優先開率使用Python3(Python2.x終究要被取代)

Python2.x與Python3.x 的具體區別,可以參閱:http://www.runoob.com/python/python-2x-3x.html

5、python的安裝

windows上的安裝

官網地址:https://www.python.org/downloads/windows/
技術分享圖片

安裝過程按照提示即可~~

測試安裝是否成功
win + R(運行) --> 輸入cmd,在命令行輸入python,回車,進入交互式環境表示安裝成功(這裏安裝的不是最新版本)
技術分享圖片

Linux上的安裝(CentOS7為例)

在CentOS7上默認安裝有python2.7.5,若要使用python3.x,另外再安裝一個Python(不刪除原來的Python,yum依賴默認安裝的Python)

下載Python3

wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz

安裝依賴環境

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
yum install gcc gcc-c++ -y         # 編譯需要的環境

編譯安裝Python3

mkdir -p /usr/local/python3
tar xf Python-3.6.6.tar.xz
cd Python-3.6.6
./configure --prefix=/usr/local/python3
make && make install

若安裝成功會顯示如下信息:

.......
.......
Looking in links: /tmp/tmp8k7hc304
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-10.0.1 setuptools-39.0.1

這表示編譯安裝 Python-3.6.6,會自動幫我們安裝setuptools, pip(源碼包中已包含了這兩個模塊),可以直接使用pip安裝python的第三方模塊,例如安裝ipython:

pip3 install ipython

若是要為centos7上默認的python(python2.7)安裝pip,可以直接使用yum安裝:

yum install -y python-pip

為Python3添加環境變量

vim /etc/profile.d/python3.sh
PYTHON3_HOME=/usr/local/python3
export PATH=$PATH:${PYTHON3_HOME}/bin

編輯完運行腳本,使環境變量生效
source /etc/profile.d/python3.sh

在命令行輸入python3,即可進入python交互式環境

[root@localhost ~]# python3
Python 3.6.6 (default, Jul 19 2018, 10:19:19)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
Type "help", "copyright", "credits" or "license" for more information.

在上述安裝ipython模塊時,可以看到,下載速度非常的慢,這是因為下載的第三方庫來自Python的官方源:https://pypi.org/pyp, 先下載到本地,然後解包安裝。在國內,推薦使用豆瓣的源:http://pypi.douban.com/simple/

使用pip安裝模塊時,指定使用的鏡像源:

pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple ipython

每次都這樣寫比較麻煩,可以寫在配置文件中:

mkdir ~/.pip    # 家目錄下創建 .pip 目錄 或者 .config 目錄(不存在創建)
vim ~/.pip/pip.conf
添加如下內容:
[global]
timeout = 60
index-url = https://pypi.doubanio.com/simple

Tip:如果使用http鏈接,需要指定trusted-host參數
[global]
timeout = 60
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com

上述為配置文件 pip.conf 在linux上的存放路徑

mac下存放路徑:
$HOME/Library/Application Support/pip/pip.conf
或者
$HOME/.pip/pip.conf

windows下存放路徑(配置文件名稱為pip.ini):
%APPDATA%\pip\pip.ini
或者
%HOME%\pip\pip.ini

6、python文件頭

在Linux環境下,執行python腳本一般有這兩種方式:
1)python filename.py
2)./filename.py

第一種方式已經指定了使用python解釋器去執行腳本;第二種方式沒有指定,則需要在腳本文件的頭部指定解釋器:

#!/usr/bin/env python     # PATH環境變量 中的第一個 python 來執行腳本
或
#!/usr/bin/python            # 使用絕對路徑指定python解釋器位置

一般在python腳本的頭部還有這麽一行,用來告訴python解釋器, 以utf-8編碼方式來解釋py文件。

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

在python2中, 如果程序中包含中文字符, 需要添加這一行。在python3中,默認編碼就是utf-8,這一行不需要添加。

聲明python文件編碼的語句必須放在py文件的第一行或者第二行,支持如下3種格式:

1)# coding=<encoding name>
2)# -*- coding: <encoding name> -*-
3)# vim: set fileencoding=<encoding name> :

Tip:通常使用第二種方式~~

7、python中的註釋

為了增加代碼的可讀性,一般會在代碼中添加註釋,單行註釋用#,多行註釋可以用三對雙引號""" """,示例如下:

class Abc():
  """
    多行註釋
    多行註釋
    多行註釋
    """
    def __init__(self):
         pass
    def say_hello(self):
         # 單行註釋
         # 單行註釋
         return ‘hello‘

?

python基礎概述