安裝
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函數,模塊和類的方法