1. 程式人生 > >python 3.7極速入門教程1安裝:Linux(Ubuntu 18.04)及Windows上安裝Anaconda

python 3.7極速入門教程1安裝:Linux(Ubuntu 18.04)及Windows上安裝Anaconda

安裝

Linux安裝

Anaconda是最受歡迎的python資料科學和機器學習平臺,用於大規模資料處理,預測分析和科學計算。Anaconda發行版附帶了1,000多個數據包,conda命令列工具和Anaconda Navigator的桌面圖形使用者介面。一般而言,使用Anaconda比直接使用官方的python更好用。

本教程將指導您完成在Ubuntu 18.04上下載和安裝Anaconda Python Distribution。通常也適合多數其他Linux。

下載Anaconda

https://www.anaconda.com/download/#linux

在撰寫本文時,Anaconda的最新穩定版本是5.3版本。

圖片.png

請選擇64-Bit (x86) Installer 進行下載,儘量不要用python2.7,很多庫已經不提供python2.7支援。

點選連結就會進行下載,同時會彈出資訊收集框,直接關閉就好。

圖片.png

安裝Anaconda


$ sudo sh Anaconda3-5.3.0-Linux-x86_64.sh 
[sudo] andrew 的密碼: 

Welcome to Anaconda3 5.3.0

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>>  # 按下回車
... # 多次按空格讀完license。
Do you accept the license terms? [yes|no]
[no] >>> yes # 輸入yes

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below
...
[/home/andrew/anaconda3] >>> /usr/local/anaconda3 # 輸入自定義目錄
...  # 安裝根據機器效能,通常需要持續幾分鐘。
# 討論 釘釘群21745728 qq群144081101 567351477
# 本文地址:https://www.jianshu.com/p/9fe9ff999234

Do you wish to proceed with the installation of Microsoft VSCode? [yes|no] #選擇no,一般來說自帶的spyder和專業IDE wingIDE更好用。
...
Do you wish the installer to initialize Anaconda3
in your /home/andrew/.bashrc ? [yes|no]
[no] >>> # 選擇yes
Initializing Anaconda3 in /home/andrew/.bashrc
A backup will be made to: /home/andrew/.bashrc-anaconda3.bak


For this change to become active, you have to open a new terminal.

Thank you for installing Anaconda3!

===========================================================================

Anaconda is partnered with Microsoft! Microsoft VSCode is a streamlined
code editor with support for development operations like debugging, task
running and version control.

To install Visual Studio Code, you will need:
  - Administrator Privileges
  - Internet connectivity

Visual Studio Code License: https://code.visualstudio.com/license

Do you wish to proceed with the installation of Microsoft VSCode? [yes|no]
>>> no

新增“export PATH=/usr/local/anconda3/bin:$PATH“ 到/etc/profile,這樣所有使用者都可以使用Anaconda python3.7了。

上面的.bashrc在剛才安裝時添加了如下內容:

# added by Anaconda3 5.3.0 installer
# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$(CONDA_REPORT_ERRORS=false '/usr/local/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
if [ $? -eq 0 ]; then
    \eval "$__conda_setup"
else
    if [ -f "/usr/local/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/usr/local/anaconda3/etc/profile.d/conda.sh"
        CONDA_CHANGEPS1=false conda activate base
    else
        \export PATH="/usr/local/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup~/.bashrc
# <<< conda init <<<

驗證安裝

通過重新登陸或者執行'source ~/.bashrc"載入環境變數。

$ conda info

     active environment : base
    active env location : /usr/local/anaconda3
            shell level : 1
       user config file : /home/andrew/.condarc
 populated config files : 
          conda version : 4.5.11
    conda-build version : 3.15.1
         python version : 3.7.0.final.0
       base environment : /usr/local/anaconda3  (read only)
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/linux-64
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/pro/linux-64
                          https://repo.anaconda.com/pkgs/pro/noarch
          package cache : /usr/local/anaconda3/pkgs
                          /home/andrew/.conda/pkgs
       envs directories : /home/andrew/.conda/envs
                          /usr/local/anaconda3/envs
               platform : linux-64
             user-agent : conda/4.5.11 requests/2.19.1 CPython/3.7.0 Linux/4.15.0-36-generic ubuntu/18.04 glibc/2.27
                UID:GID : 1000:1000
             netrc file : None
           offline mode : False

$ python
Python 3.7.0 (default, Jun 28 2018, 13:15:42) 
[GCC 7.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

至此,已經安裝完畢。

更新Anaconda

一般是有新版本釋出時才需要使用。

$ conda update conda
$ conda update anaconda

刪除Anaconda

一般是有新版本釋出時才需要使用。

$sudo rm -rf /usr/local/anaconda3
刪除上面~/.bashrc和/etc/profile的修改
清空隱藏檔案: rm -rf ~/.condarc ~/.conda ~/.continuum

參考資料

Windows安裝

下載,比如:https://repo.anaconda.com/archive/Anaconda3-5.3.0-Windows-x86_64.exe

執行:

圖片.png

圖片.png

圖片.png

圖片.png

圖片.png

上面紅色的部分一定要選中,這樣會幫你自動配置環境變數。

圖片.png

圖片.png

圖片.png

圖片.png

新開cmd,輸入python

圖片.png

命令列輸入spyder 圖片.png

wingide

圖片.png

MAC安裝

MAC的安裝和Windows類似。

Hello

命令列方式

$ python
Python 3.7.0 (default, Jun 28 2018, 13:15:42)
[GCC 7.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello, https://china-testing.github.io/")
Hello, https://china-testing.github.io/

ipython方式

$ ipython
Python 3.7.0 (default, Jun 28 2018, 13:15:42)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.5.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: print("Hello, https://china-testing.github.io/")
Hello, https://china-testing.github.io/

IDE方式

圖片.png

檔案方式

圖片.png

圖片.png

圖片.png

上面程式碼地址:https://github.com/china-testing/python-api-tesing/blob/master/python3.7quick/2hello.py

__main__

當Python直譯器讀取原始檔時,它將執行其中的所有程式碼。

當Python執行“原始檔”作為主程式時,它將特殊變數( __name __)設定為具(“ __main __”)。

“if __name __ ==” __main __“允許您將Python檔案作為可重用模組或獨立程式執行。

與C一樣,Python使用==進行比較,而使用=進行賦值。

圖片.png

上面程式碼地址:https://github.com/china-testing/python-api-tesing/blob/master/python3.7quick/2main.py

變數

Python變數是用於儲存值的保留記憶體位置。 換句話說,python程式中的變數將資料提供給計算機進行處理。

Python中的每個值都有資料型別。 Python中不同的資料型別是數值,列表,元組,字串,字典等。變數可以用任何名稱宣告,甚至可以用a,aa,abc等字母表來宣告,命名規則和C語言的類似。字母或下劃線開頭,除第一位外可以包含數字。

圖片.png

上面程式碼地址:https://github.com/china-testing/python-api-tesing/blob/master/python3.7quick/3var.py

作用域

如果要在程式或模組的其餘部分使用相同的變數,可宣告為全域性變數;如果只在特定函式或方法中使用該變數,則使用區域性變數。

讓我們通過以下程式理解本地變數和全域性變數之間的差異。

全域性變數f被賦予值101

函式中宣告區域性變數,賦值"I am learning Python."

圖片.png

上面程式碼地址:https://github.com/china-testing/python-api-tesing/blob/master/python3.7quick/3local.py

關鍵字global,可以在函式內引用全域性變數。

圖片.png

實際上區域性找不到變數也會到全域性去找。上面程式碼地址:https://github.com/china-testing/python-api-tesing/blob/master/python3.7quick/3global.py

使用命令del“variable name”可以刪除變數。

在下面的例子中,我們刪除了變數f,當我們繼續列印它時,得到錯誤“變數名未定義”,這意味著你已經刪除了變數。

圖片.png

python和其他語言比較

  • Java

通常Python執行速度比Java程式慢點,但開發時間短很多。Python高階資料型別及其動態型別是比Java程式慢的主要原因,但是python很多庫比如numpy之類的是c或c++實現,實際執行效率有時比java還快。但是Java在android應用廣泛,python則沒有。現在第一語言的排名主要是Python和java的鬥爭。Python借人工智慧和其他非IT專業業人士的資料分析等,有逐漸拉開與java距離的趨勢。

  • Perl

雖然這兩種語言在很多方面都被認為是相似的,但Perl支援常見的面向應用程式的任務,如報告生成,檔案掃描等。而Python支援常見的程式設計方法,如資料結構設計和OOP程式設計,程式碼可讀性更好,第三方庫更豐富,與其他語言互動更方便,Perl是直接被Python超越並逐漸沒落的。

  • TCL

Tcl資料結構很弱,執行程式碼的速度更慢,主要在一些通訊儀表中使用,是一個極其次要的語言。

  • PHP

Python可讀性更好。

在Python中,類在標準庫中廣泛使用,而PHP具有完全基於類的SPL。

Python支援結構化異常處理,而大多數PHP函式不使用異常來報告錯誤

Python中的開發功能由庫提供,而在PHP中則是內建的

Python支援主要的GUI框架

PHP曾經是web後臺開發的霸主語言,在其他地方基本上無用武之地,近年來PHP在web後臺開發方面不敵Python,Java等語言,日漸衰落。

  • Ruby

與Ruby相比,Python具有豐富的資料結構,內部函式,更好的名稱空間處理以及模組和迭代器的使用

Python支援多重繼承,而Ruby則不支援。Python更簡潔。

RUBY在Web開發和函數語言程式設計有一定市場,但是因為Python過於龐大的庫,可讀性等,後臺主流指令碼語言沒有不因為Python擴張而衰落的。

  • C ++

Python程式碼比大多數其他程式語言(如C或C ++)短得多。

Python是一種動態型別語言,而C ++是一種靜態型別語言。

Python的效率遠不敵C或C ++,Python和C或C ++是黃金組合。

  • JavaScript

Python主要在伺服器端。 JavaScript主要在客戶端。

Python使用縮排和空格。 JavaScript使用大括號來指定程式碼塊。

JavaScript是主流語言中唯一不受Python衝擊的指令碼語言。

常見面試問題與解答

  • 什麼是Python?使用Python有什麼好處?

Python是一種程式語言,包含物件,模組,執行緒,程序,異常和自動記憶體管理等。Python的好處在於它簡單易用,可移植,可擴充套件,內建資料結構,並且開源。

  • 什麼是PEP 8?

PEP 8是一個編碼約定,一組推薦,關於如何編寫Python程式碼更具可讀性,俗稱程式設計風格指南。

  • 什麼是pickling和unpickling?

Pickle模組接受任何Python物件並將其轉換為字串表示形式,並使用dump函式將其轉儲到檔案中,此過程稱為pickling。從儲存的字串表示中還原原始Python物件的過程稱為unpickling。

  • Python如何解釋?

Python語言是一種解釋語言。 Python程式直接從原始碼執行。它將程式設計師編寫的原始碼轉換為中間語言,再轉換為機器語言。

  • 如何在Python中管理記憶體?

Python記憶體由Python私有堆空間管理。所有Python物件和資料結構都位於私有堆中。程式設計師無權訪問此私有堆,直譯器負責處理此私有堆。

Python物件的Python堆空間分配由Python記憶體管理器完成。核心API提供了一些程式設計師編寫程式碼的工具。

Python還有一個內建的垃圾收集器,它可以回收所有未使用的記憶體並釋放記憶體並使其可用於堆空間。

  • 有哪些工具可以幫助查詢錯誤或執行靜態分析?

PyChecker是一個靜態分析工具,可以檢測Python原始碼中的錯誤,並警告錯誤的風格和複雜性。 Pylint是另一種驗證模組是否符合編碼標準的工具。

7)什麼是Python裝飾器?

Python裝飾器是我們在Python語法中進行的一項特定更改,可以輕鬆地更改函式。

8)list和tuple有什麼區別?

列表和元組之間的區別在於列表是可變的而元組不是。元組可以被雜湊,例如作為詞典的關鍵。

9)引數如何通過值或引用傳遞?

Python中的所有內容都是一個物件,所有變數都包含物件的引用。參考值根據功能;因此,您無法更改引用的值。但是,如果物件是可變的,則可以更改它們。

10)Dict和List理解是什麼?

它們是語法結構,可以根據現有的iterable輕鬆建立Dictionary或List。

11)python提供的內建型別是什麼?

有可變和不可變型別的Pythons以Mutable內建型別構建

名單 集 字典 不可變的內建型別

字串 元組 數字 12)Python中的名稱空間是什麼?

在Python中,引入的每個名稱都有一個存在的地方,並且可以被掛鉤。這稱為名稱空間。它就像一個框,其中變數名稱對映到放置的物件。每當搜尋到變數時,將搜尋此框以獲取相應的物件。

13)Python中的lambda是什麼?

它是一個單獨的表示式匿名函式,通常用作行內函數。

14)為什麼python中的lambda表單沒有語句?

python中的lambda表單沒有語句,因為它用於建立新的函式物件,然後在執行時返回它們。

15)什麼是Python傳遞?

通過意味著,無操作的Python語句,或者換句話說,它是複合語句中的佔位符,其中應該留有空白,不必在那裡寫入任何內容。

16)在Python中什麼是迭代器?

在Python中,迭代器用於迭代一組元素,如列表之類的容器。

17)什麼是Python中的單元測試?

Python中的單元測試框架稱為unittest。它支援共享設定,自動化測試,測試關閉程式碼,將測試聚合到集合等。

18)在Python中切片是什麼?

從序列型別(如列表,元組,字串等)中選擇一系列專案的機制稱為切片。

19)Python中的生成器是什麼?

實現迭代器的方法稱為生成器。這是一個正常的函式,除了它在函式中產生表示式。

20)Python中的docstring是什麼?

Python文件字串稱為docstring,它是一種記錄Python函式,模組和類的方法