专栏首页python3python基础概述

python基础概述

1、python简介

python诞生于1989年,创始人 吉多·范罗苏姆(Guido van Rossum)。python是一种 C和shell 之间,功能全面,易学易用,可拓展的语言。 如下是最新的TIOBE排行榜(https://www.tiobe.com/tiobe-index

现在,python主要应用于web开发(Django框架, Tornado框架,flask,bottle),网络编程(支持高并发的Twisted网络框架),爬虫,云计算,人工智能,游戏开发,金融分析,还有就是运维开发,现在python是每个运维工程师必须掌握的开发语言 之一 ~~

2、编译型语言和解释型语言

编译型语言

编译型语言需要有专门的编译器,能够将代码 针对特定的平台(操作系统)编译成机器码,然后是链接过程,把各个模块的机器码和依赖库连起来生成可执行文件。 优点:编译器在预编译过程能够对代码进行优化。编译只需要进行一次,生成的可执行文件就可以在特定的平台脱离语言环境独立运行,运行效率高。 缺点:不同的平台之间移植存在问题,需要根据不同的平台编译多个可执行文件。编译完成后,若需要修改,就要重新编译整个模块。 代表语言有 C、C++、Object-C.....


解释型语言

解释型语言不需要事先编译,在运行过程中由解释器逐行解释,然后运行。 优点:良好的平台兼容性,只要有解释器,相同的代码就可以在不同的平台上运行 缺点:相比于编译型语言,运行速度较慢。 代表语言有 python、ruby、php、JavaScript、Erlang

Tip:java属于混合型语言,java需要编译之后才能运行,但是其编译后,并不是像C,C++语言那样编译成机器语言,而是编译成与平台无关的字节码.class文件,字节码文件不能直接运行于操作系统之上,需要被java虚拟机翻译成本地的机器码后才能执行,而这个过程是读取一条指令,然后翻译,最后执行,翻译性的过程。

python属于解释型语言,当执行python程序时,python解释器先将源代码转换为字节码,然后再由python解释器执行这些字节码,每一次的运行都是这样的一个过程。相比于编译型语言,每一次的执行都多出了编译、链接的过程,速度稍慢,但是这样更易于代码移植,且不用担心程序的编译,库的链接加载等问题~ python提供了编译的方法,可以先将python程序编译成字节码存储下来,在运行时直接运行字节码文件,这是出于对效率的考虑。python程序一般的运行,产生的字节码不会保留下来,只有在import导入py文件时,才会产生pyc字节码文件,并在运行时,替代原文件直接运行~

3、Python解释器

Python的解释器有好多种,具体的分类如下:

  • Cpython Python的官方版本,也是最常用的版本,使用C语言实现,CPython实现将源文件(py文件)转换成字节码文件(pyc文件),然后执行字节码文件。
  • Jyhton Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
  • IronPython Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
  • PyPy(特殊) Python实现的Python,将Python的字节码字节码再编译成机器码。
  • RubyPython、Brython ... 4、python2和python3 Python的3版本,常被称为Python 3000。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。早期Python版本的程式都无法在Python 3.0上正常执行。 Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。

总的来说 Python3 比 2.x 做了很多的改进,若是开发新的项目,优先开率使用Python3(Python2.x终究要被取代)

Python2.x与Python3.x 的具体区别,可以参阅:http://www.runoob.com/python/python-2x-3x.html

5、python的安装

windows上的安装

官网地址:https://www.python.org/downloads/windows/

安装过程按照提示即可~~

测试安装是否成功 win + R(运行) --> 输入cmd,在命令行输入python,回车,进入交互式环境表示安装成功(这里安装的不是最新版本)

Linux上的安装(CentOS7为例)

在CentOS7上默认安装有python2.7.5,若要使用python3.x,另外再安装一个Python(不删除原来的Python,yum依赖默认安装的Python)

下载Python3

wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz

安装依赖环境

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         # 编译需要的环境

编译安装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

若安装成功会显示如下信息:

.......
.......
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,会自动帮我们安装setuptools, pip(源码包中已包含了这两个模块),可以直接使用pip安装python的第三方模块,例如安装ipython:

pip3 install ipython

若是要为centos7上默认的python(python2.7)安装pip,可以直接使用yum安装:

yum install -y python-pip

为Python3添加环境变量

vim /etc/profile.d/python3.sh
PYTHON3_HOME=/usr/local/python3
export PATH=$PATH:${PYTHON3_HOME}/bin

编辑完运行脚本,使环境变量生效
source /etc/profile.d/python3.sh

在命令行输入python3,即可进入python交互式环境

[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模块时,可以看到,下载速度非常的慢,这是因为下载的第三方库来自Python的官方源:https://pypi.org/pyp, 先下载到本地,然后解包安装。在国内,推荐使用豆瓣的源:http://pypi.douban.com/simple/

使用pip安装模块时,指定使用的镜像源:

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

每次都这样写比较麻烦,可以写在配置文件中:

mkdir ~/.pip    # 家目录下创建 .pip 目录 或者 .config 目录(不存在创建)
vim ~/.pip/pip.conf
添加如下内容:
[global]
timeout = 60
index-url = https://pypi.doubanio.com/simple

Tip:如果使用http链接,需要指定trusted-host参数
[global]
timeout = 60
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com

# 使用aliyun上的源,添加内容如下:
[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下存放路径(配置文件名称为pip.ini):
%APPDATA%\pip\pip.ini
或者
%HOME%\pip\pip.ini

6、python文件头

在Linux环境下,执行python脚本一般有这两种方式: 1)python filename.py 2)./filename.py

第一种方式已经指定了使用python解释器去执行脚本;第二种方式没有指定,则需要在脚本文件的头部指定解释器:

#!/usr/bin/env python     # PATH环境变量 中的第一个 python 来执行脚本
或
#!/usr/bin/python            # 使用绝对路径指定python解释器位置

一般在python脚本的头部还有这么一行,用来告诉python解释器, 以utf-8编码方式来解释py文件。

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

在python2中, 如果程序中包含中文字符, 需要添加这一行。在python3中,默认编码就是utf-8,这一行不需要添加。

声明python文件编码的语句必须放在py文件的第一行或者第二行,支持如下3种格式:

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

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

7、python中的注释

为了增加代码的可读性,一般会在代码中添加注释,单行注释用#,多行注释可以用三对双引号""" """,示例如下:

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

事实上,3对双引号""" """也可以使用3对单引号''' '''替换,同样表示多行注释:

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

3对单引号或者3对双引号还有另外一种用途,就是可以表示多行输出,例如要输出如下语句:

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

方式一:

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

方式二(3对单引号还是3对双引号,结果一样)Pycharm环境:

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

输出结果:
line1---
line2---
line3---

8、python中的单引号和双引号

python中的单引号和双引号都可以用来表示一个字符串~

str1 = 'python'
str2 = "python" 

简单的说两者没什么区别 单引号和双引号同时存在的意义在于:当字符串中存在单引号(或者双引号)时,可以使用双引号(单引号)表示一个字符串,避免使用转义字符,例如字符串 if you're a python,若使用单引号需要使用转义字符:

str = 'if you\'re a python'

而如果使用双引号就可以避免使用 \:

str = "if you're a python"

反过来也一样,当字符串中存在 双引号" " ,就使用单引号表示字符串。这里就很好的体现了python的易用性~ .................^_^

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《一头扎进》系列之Python+Selenium框架设计篇5 - 价值好几K的框架,哎呦!这个框架还真有点料啊!!!

      其实,到前面这一篇文章,简单的Python+Selenium自动化测试框架就已经算实现了。接下来的主要是介绍,unittest管理脚本,如何如何加载执行脚本...

    北京-宏哥
  • 《一头扎进》系列之Python+Selenium框架设计篇3- 价值好几K的框架,狼来了,狼来了....,狼没来,框架真的来了

      前边宏哥一边一边的喊框架,就如同一边一边的喊狼来了!狼来了!.....这回是狼没有来,框架真的来了。从本文开始宏哥将会一步一步介绍,如何从无到有地创建自己的...

    北京-宏哥
  • 0736-1.6.1-如何配置CDSW使用本地的Pycharm

    在CDSW1.5及以前版本,仅支持内置的编辑器,往往数据科学家在做模型开发训练时更倾向于使用自己熟悉的IDE开发工具。所以在CDSW1.6开始,引入了一个新功能...

    Fayson
  • 《一头扎进》系列之Python+Selenium框架实战篇4- 价值好几K的框架,呵!这个框架有点意思啊!!!

      前面文章,我们实现了框架的一部分功能,包括日志类和浏览器引擎类的封装,今天我们继续封装一个基类和介绍如何实现POM。关于基类,是这样定义的:把一些常见的页面...

    北京-宏哥
  • Shell 编程的老臣 - sed

    shell 的世界里有两个好兄弟:sed 和 gawk. 今天先讲其一 sed.

    Lenis
  • python数据处理

    在数据分析的时候,原始数据或多或少都会存在大量的不完整、不一致,等异常的数据,会严重影响到数据分析的工作。经常遇到的数据清洗大都是处理缺失数据,清除无意...

    andrew_a
  • 使用Python合并任意多个PDF文件

    在工作中,经常会遇到合并pdf文件的需求,这时候你会发现不是一件很容易完成的任务。包括WPS、福昕阅读器在内的很多软件都有合并pdf文件的功能,但是只有交钱变成...

    Python小屋屋主
  • Comet OJ - Contest \#11 eon题解

    「这次练习用的数也太大了吧,我怎么记得住。」线段树小声嘀咕着,「我用所有的手指也只能数到 10231023 。」

    YINUXY
  • Python中关于底图的操作

    Python基于其强大的功能越来越成为了科学利器,气象上对精细化的要求越来越高,对于底图的制作也越来越高。本人气象出身,长期用NCL画图,但是NCL对于精细化底...

    zhangqibot
  • PyQt十讲 | 关于PyQt十讲内容的总结

    时至今日,PyQt十讲内容全部更新完毕,路漫漫其修远兮,吾将上下而求索。本期针对这十讲内容做了一个总结。希望大家可以从中受益。

    我的明天你好

扫码关注云+社区

领取腾讯云代金券