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版本。
請選擇64-Bit (x86) Installer 進行下載,儘量不要用python2.7,很多庫已經不提供python2.7支援。
點選連結就會進行下載,同時會彈出資訊收集框,直接關閉就好。
安裝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
參考資料
- 討論qq群144081101 591302926 567351477 釘釘免費群21745728
- 本文最新版本地址
- 本文涉及的python測試開發庫 謝謝點贊!
- 本文相關海量書籍下載
- https://linuxize.com/post/how-to-install-anaconda-on-ubuntu-18-04/
Windows安裝
下載,比如:https://repo.anaconda.com/archive/Anaconda3-5.3.0-Windows-x86_64.exe
執行:
上面紅色的部分一定要選中,這樣會幫你自動配置環境變數。
新開cmd,輸入python
命令列輸入spyder
wingide
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方式
檔案方式
上面程式碼地址: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使用==進行比較,而使用=進行賦值。
上面程式碼地址:https://github.com/china-testing/python-api-tesing/blob/master/python3.7quick/2main.py
變數
Python變數是用於儲存值的保留記憶體位置。 換句話說,python程式中的變數將資料提供給計算機進行處理。
Python中的每個值都有資料型別。 Python中不同的資料型別是數值,列表,元組,字串,字典等。變數可以用任何名稱宣告,甚至可以用a,aa,abc等字母表來宣告,命名規則和C語言的類似。字母或下劃線開頭,除第一位外可以包含數字。
上面程式碼地址:https://github.com/china-testing/python-api-tesing/blob/master/python3.7quick/3var.py
作用域
如果要在程式或模組的其餘部分使用相同的變數,可宣告為全域性變數;如果只在特定函式或方法中使用該變數,則使用區域性變數。
讓我們通過以下程式理解本地變數和全域性變數之間的差異。
全域性變數f被賦予值101
函式中宣告區域性變數,賦值"I am learning Python."
上面程式碼地址:https://github.com/china-testing/python-api-tesing/blob/master/python3.7quick/3local.py
關鍵字global,可以在函式內引用全域性變數。
實際上區域性找不到變數也會到全域性去找。上面程式碼地址:https://github.com/china-testing/python-api-tesing/blob/master/python3.7quick/3global.py
使用命令del“variable name”可以刪除變數。
在下面的例子中,我們刪除了變數f,當我們繼續列印它時,得到錯誤“變數名未定義”,這意味著你已經刪除了變數。
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函式,模組和類的方法