安装
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函数,模块和类的方法