溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python基礎(chǔ)概述

發(fā)布時(shí)間:2020-06-26 16:35:12 來(lái)源:網(wǎng)絡(luò) 閱讀:682 作者:LJ_baby 欄目:編程語(yǔ)言

1、python簡(jiǎn)介

python誕生于1989年,創(chuàng)始人 吉多·范羅蘇姆(Guido van Rossum)。python是一種 C和shell 之間,功能全面,易學(xué)易用,可拓展的語(yǔ)言。
?
如下是最新的TIOBE排行榜(https://www.tiobe.com/tiobe-index )
python基礎(chǔ)概述
?
現(xiàn)在,python主要應(yīng)用于web開(kāi)發(fā)(Django框架, Tornado框架,flask,bottle),網(wǎng)絡(luò)編程(支持高并發(fā)的Twisted網(wǎng)絡(luò)框架),爬蟲(chóng),云計(jì)算,人工智能,游戲開(kāi)發(fā),金融分析,還有就是運(yùn)維開(kāi)發(fā),現(xiàn)在python是每個(gè)運(yùn)維工程師必須掌握的開(kāi)發(fā)語(yǔ)言 之一 ~~

2、編譯型語(yǔ)言和解釋型語(yǔ)言

編譯型語(yǔ)言

編譯型語(yǔ)言需要有專(zhuān)門(mén)的編譯器,能夠?qū)⒋a 針對(duì)特定的平臺(tái)(操作系統(tǒng))編譯成機(jī)器碼,然后是鏈接過(guò)程,把各個(gè)模塊的機(jī)器碼和依賴(lài)庫(kù)連起來(lái)生成可執(zhí)行文件。
?
優(yōu)點(diǎn):編譯器在預(yù)編譯過(guò)程能夠?qū)Υa進(jìn)行優(yōu)化。編譯只需要進(jìn)行一次,生成的可執(zhí)行文件就可以在特定的平臺(tái)脫離語(yǔ)言環(huán)境獨(dú)立運(yùn)行,運(yùn)行效率高。
缺點(diǎn):不同的平臺(tái)之間移植存在問(wèn)題,需要根據(jù)不同的平臺(tái)編譯多個(gè)可執(zhí)行文件。編譯完成后,若需要修改,就要重新編譯整個(gè)模塊。
?
代表語(yǔ)言有 C、C++、Object-C.....


解釋型語(yǔ)言

解釋型語(yǔ)言不需要事先編譯,在運(yùn)行過(guò)程中由解釋器逐行解釋?zhuān)缓筮\(yùn)行。
?
優(yōu)點(diǎn):良好的平臺(tái)兼容性,只要有解釋器,相同的代碼就可以在不同的平臺(tái)上運(yùn)行
缺點(diǎn):相比于編譯型語(yǔ)言,運(yùn)行速度較慢。
?
代表語(yǔ)言有 python、ruby、php、JavaScript、Erlang
?

Tip:java屬于混合型語(yǔ)言,java需要編譯之后才能運(yùn)行,但是其編譯后,并不是像C,C++語(yǔ)言那樣編譯成機(jī)器語(yǔ)言,而是編譯成與平臺(tái)無(wú)關(guān)的字節(jié)碼.class文件,字節(jié)碼文件不能直接運(yùn)行于操作系統(tǒng)之上,需要被java虛擬機(jī)翻譯成本地的機(jī)器碼后才能執(zhí)行,而這個(gè)過(guò)程是讀取一條指令,然后翻譯,最后執(zhí)行,翻譯性的過(guò)程。

python屬于解釋型語(yǔ)言,當(dāng)執(zhí)行python程序時(shí),python解釋器先將源代碼轉(zhuǎn)換為字節(jié)碼,然后再由python解釋器執(zhí)行這些字節(jié)碼,每一次的運(yùn)行都是這樣的一個(gè)過(guò)程。相比于編譯型語(yǔ)言,每一次的執(zhí)行都多出了編譯、鏈接的過(guò)程,速度稍慢,但是這樣更易于代碼移植,且不用擔(dān)心程序的編譯,庫(kù)的鏈接加載等問(wèn)題~
?
python提供了編譯的方法,可以先將python程序編譯成字節(jié)碼存儲(chǔ)下來(lái),在運(yùn)行時(shí)直接運(yùn)行字節(jié)碼文件,這是出于對(duì)效率的考慮。python程序一般的運(yùn)行,產(chǎn)生的字節(jié)碼不會(huì)保留下來(lái),只有在import導(dǎo)入py文件時(shí),才會(huì)產(chǎn)生pyc字節(jié)碼文件,并在運(yùn)行時(shí),替代原文件直接運(yùn)行~

3、Python解釋器

Python的解釋器有好多種,具體的分類(lèi)如下:

  • Cpython
    Python的官方版本,也是最常用的版本,使用C語(yǔ)言實(shí)現(xiàn),CPython實(shí)現(xiàn)將源文件(py文件)轉(zhuǎn)換成字節(jié)碼文件(pyc文件),然后執(zhí)行字節(jié)碼文件。
  • Jyhton
    Python的Java實(shí)現(xiàn),Jython會(huì)將Python代碼動(dòng)態(tài)編譯成Java字節(jié)碼,然后在JVM上運(yùn)行。
  • IronPython
    Python的C#實(shí)現(xiàn),IronPython將Python代碼編譯成C#字節(jié)碼,然后在CLR上運(yùn)行。(與Jython類(lèi)似)
  • PyPy(特殊)
    Python實(shí)現(xiàn)的Python,將Python的字節(jié)碼字節(jié)碼再編譯成機(jī)器碼。
  • RubyPython、Brython ...
    ?

    4、python2和python3

    Python的3版本,常被稱(chēng)為Python 3000。相對(duì)于Python的早期版本,這是一個(gè)較大的升級(jí)。為了不帶入過(guò)多的累贅,Python 3.0在設(shè)計(jì)的時(shí)候沒(méi)有考慮向下兼容。早期Python版本的程式都無(wú)法在Python 3.0上正常執(zhí)行。
    Python 2.6作為一個(gè)過(guò)渡版本,基本使用了Python 2.x的語(yǔ)法和庫(kù),同時(shí)考慮了向Python 3.0的遷移,允許使用部分Python 3.0的語(yǔ)法與函數(shù)。

總的來(lái)說(shuō) Python3 比 2.x 做了很多的改進(jìn),若是開(kāi)發(fā)新的項(xiàng)目,優(yōu)先開(kāi)率使用Python3(Python2.x終究要被取代)

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

5、python的安裝

windows上的安裝

官網(wǎng)地址:https://www.python.org/downloads/windows/
python基礎(chǔ)概述

安裝過(guò)程按照提示即可~~

測(cè)試安裝是否成功
win + R(運(yùn)行) --> 輸入cmd,在命令行輸入python,回車(chē),進(jìn)入交互式環(huán)境表示安裝成功(這里安裝的不是最新版本)
python基礎(chǔ)概述

Linux上的安裝(CentOS7為例)

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

下載Python3
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz
安裝依賴(lài)環(huán)境
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         # 編譯需要的環(huán)境
編譯安裝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

若安裝成功會(huì)顯示如下信息:

.......
.......
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,會(huì)自動(dòng)幫我們安裝setuptools, pip(源碼包中已包含了這兩個(gè)模塊),可以直接使用pip安裝python的第三方模塊,例如安裝ipython:

pip3 install ipython

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

yum install -y python-pip
為Python3添加環(huán)境變量
vim /etc/profile.d/python3.sh
PYTHON3_HOME=/usr/local/python3
export PATH=$PATH:${PYTHON3_HOME}/bin

編輯完運(yùn)行腳本,使環(huán)境變量生效
source /etc/profile.d/python3.sh

在命令行輸入python3,即可進(jìn)入python交互式環(huán)境

[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模塊時(shí),可以看到,下載速度非常的慢,這是因?yàn)橄螺d的第三方庫(kù)來(lái)自Python的官方源:https://pypi.org/pyp, 先下載到本地,然后解包安裝。在國(guó)內(nèi),推薦使用豆瓣的源:http://pypi.douban.com/simple/

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

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

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

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

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

# 使用aliyun上的源,添加內(nèi)容如下:
[global]
timeout = 60
trusted-host = mirrors.aliyun.com
index-url = https://mirrors.aliyun.com/pypi/simple

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

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

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

6、python文件頭

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

第一種方式已經(jīng)指定了使用python解釋器去執(zhí)行腳本;第二種方式?jīng)]有指定,則需要在腳本文件的頭部指定解釋器:

#!/usr/bin/env python     # PATH環(huán)境變量 中的第一個(gè) python 來(lái)執(zhí)行腳本
或
#!/usr/bin/python            # 使用絕對(duì)路徑指定python解釋器位置

一般在python腳本的頭部還有這么一行,用來(lái)告訴python解釋器, 以u(píng)tf-8編碼方式來(lái)解釋py文件。

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

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

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

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

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

7、python中的注釋

為了增加代碼的可讀性,一般會(huì)在代碼中添加注釋?zhuān)瑔涡凶⑨層?,多行注釋可以用三對(duì)雙引號(hào)""" """,示例如下:

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

事實(shí)上,3對(duì)雙引號(hào)""" """也可以使用3對(duì)單引號(hào)''' '''替換,同樣表示多行注釋?zhuān)?/p>

class Abc():
  '''
    多行注釋
    多行注釋
    多行注釋
    '''
  def __init__(self):
      pass
  def say_hello(self):
     # 單行注釋
     # 單行注釋
     return 'hello'

?
3對(duì)單引號(hào)或者3對(duì)雙引號(hào)還有另外一種用途,就是可以表示多行輸出,例如要輸出如下語(yǔ)句:

line1---
line2---
line3---

方式一:

>>> str1 = "line1---\nline2---\nline3---"
>>> str1
'line1---\nline2---\nline3---'
>>> print(str1)
line1---
line2---
line3---

方式二(3對(duì)單引號(hào)還是3對(duì)雙引號(hào),結(jié)果一樣)Pycharm環(huán)境:

str2 = '''line1---
line2---
line3---'''
print(str2)

輸出結(jié)果:
line1---
line2---
line3---

8、python中的單引號(hào)和雙引號(hào)

python中的單引號(hào)和雙引號(hào)都可以用來(lái)表示一個(gè)字符串~

str1 = 'python'
str2 = "python" 

簡(jiǎn)單的說(shuō)兩者沒(méi)什么區(qū)別
?
單引號(hào)和雙引號(hào)同時(shí)存在的意義在于:當(dāng)字符串中存在單引號(hào)(或者雙引號(hào))時(shí),可以使用雙引號(hào)(單引號(hào))表示一個(gè)字符串,避免使用轉(zhuǎn)義字符,例如字符串 if you're a python,若使用單引號(hào)需要使用轉(zhuǎn)義字符:

str = 'if you\'re a python'

而如果使用雙引號(hào)就可以避免使用 \:

str = "if you're a python"

?
反過(guò)來(lái)也一樣,當(dāng)字符串中存在 雙引號(hào)" " ,就使用單引號(hào)表示字符串。這里就很好的體現(xiàn)了python的易用性~
.................^_^

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI