【python从零入门 | 01】系统化的认识python

244 阅读10分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第26天,点击查看活动详情 🍁作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道TOP1🏅 阿里云ACE认证高级工程师🏅
✒️个人主页:小鹏linux
💊个人社区:小鹏linux(个人社区)欢迎您的加入!

python之父——吉多·范罗苏姆1989年,为了打发无聊的圣诞节假期,Guido开始用C语言写Python语言的编译器Python的意思是蟒蛇,源于作者喜欢的一部电视剧。1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件从一出生,Python已经具有了 :类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。Python语法很多来自C,但又受到ABC语言的强烈影响。Python的解释器如今有多个语言实现,我们常用的是CPython(官方版本的C语言实现),其他还有Jython(可以运行在Java平台)Python目前有两个版本,Python2.x和Python3.x,最新版分别为2.7.14和3.6.3

2. 应用场景:

2.1 Web 应用开发

Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。Python 定义了WSGI (是Python 应用程序或框架和Web服 服务器之间的一种接口)标准应用接口来协调Http 服务器与基于Python 的Web 程序之间的通信

2.2 自动化运维

在很多操作系统里,Python是标准的系统组件。 大多数Linux发行版以及ubuntu、CentOS、NetBSD、OpenBSD和Mac OS X都集成了Python,可以在终端下直接运行Python。有一些Linux发行版的安装器使用Python语言编写,比如Ubuntu的Ubiquity安装器,Red HatLinux的Anaconda安装器。Python标准库包含了多个调用操作系统功能的库。通过pywin32这个第三方软件包,Python能够访问Windows的COM服务及其它Windows API。Python编写的系统管理脚本在可读性、性能、代码重用度、扩展性几方面都优于普通的shell脚本。

2.3 科学计算

NumPy,SciPy,Matplotlib可以让Python程序员编写科学计算程序。

2.4 桌面软件

PyQt、PySide、wxPython、PyGTK是Python快速开发桌面应用程序的利器

2.5 服务器软件

Python对于各种网络协议的支持很完善,因此经常被用于编写 服务器软件、网络爬虫。第三方库Twisted[ˈtwɪstɪd] 支持异步网络编程和多数标准的网络协议(包含客户端和服务器),并且提供了多种工具,被广泛用于编写高性能的服务器软件。

2.6 游戏

很多游戏使用C++编写图形显示等高性能模块,而使用Python或者Lua编写游戏的逻辑、服务器。相较于Python,Lua的功能更简单、体积更小;而Python则支持更多的特性和数据类型

2.7 产品早期原型和迭代

饿了么、小米、瓜子、Ucloud、360、腾讯、阿里巴巴、陌陌、美团和知乎 , YouTube、Google、Yahoo!、NASA都在内部大量地使用Python。

2.8 人工智能

pyDatalog:Python中的逻辑编程引擎。SimpleAI:Python实现在“人工智能:一种现代的方法”这本书中描述过的人工智能的算法。它专注于提供一个易于使用,有良好文档和测试的库。EasyAI:一个双人AI游戏的python引擎(负极大值,置换表、游戏解决)

2.9 数据分析

1、python下的数据分析模块pandas: :主要用于数据分析,数据 预处理以及基本的作图,这个包不涉及复杂的模型。2、python的数据可视化最常用的matplotlib,用于科学制图——基础的绘图,已经集成在pandas里。3、Python的爬虫Scrapy :Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。

3.开发环境搭建

3.1 python 2

在大多数Linux系统上都已经有集成好了Python开发环境,不需要安装就可以执行Python代码了验证Python2环境是否搭建好Ctrl + Alt + t 打开终端输入命令:python退出Python2环境命令:exit()或者Ctrl+d

3.2 python 3

验证Python3环境是否搭建好Ctrl + Alt + t 打开终端输入命令:python

p ython3 安装过程

前期准备工作:安装依赖
yum install -y openssl-devel openssl-static zlib-devel lzma tk-devel xz-devel bzip2-devel ncurses-devel gdbm-devel readline-devel sqlite-devel gcc libffi-devel

1.上传压缩包 rz2.解压到指定位置
tar -zxf Python-3.7.6.tgz -C /opt/app/

3.执行配置文件
./configure

4.编译安装
make && make install

5.设置软链接
ln -s /opt/app/Python-3.7.6/python /usr/bin/python3

4.python程序

4.1 Python 执行过程解析

一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。在计算机内部,Python 解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。 由于你只需要把你的Python 程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python 程序更加易于移植

4.2 Python 解释器。

当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种CPython:当我们从Python官方网站下载并安装好Python 3.5后,我们就直接获得了一个官方版本的解释器: :CPython 。这个解释器是用C 语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器。IPython:IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。PyPy:PyPy是另一个Python解释器, 它的目标是执行速度。PyPy采 用JIT 技术,对Python代码 进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。Jython:Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。IronPython:IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。小结:Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

4.3 使用交互模式写 Python 程序

第一种通过终端输入python或python3进入终端交互模式第二种通过编辑器,如vim编写Python程序

4.4 在文件的头部配置 Python 解释器

在代码第一行写入执行时的Python解释器路径,编辑完后需要对此Python文件添加'x'权限编辑完成后正常情况下,我们会给.py文件添加可执行权限

5. Linux 交互模式 IPython

5.1 Ipython 简介

IPython 是一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持bash shell 命令,内置了许多很有用的功能和函数。

5.2 开启 Python3 交互模式(必须联网)

更新pip版本命令:pip3 install --upgrade pip安装命令:pip3 install ipython  (需要切换到root用户进行安装)总结:ipython3的好处是可以命令自动补全,还可以执行Linux部分命令,以后测试一些小案例用交互模式要多一些。

02. 基础

1 注释

注释的作用:

以#开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用

注释的分类

单行注释 多行注释

Python2 程序支持中文

utf-8,又称万国码,支持中文,日文,俄文等用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)格式 :  # -- coding:utf-8 --  或者  #coding=utf-8

2. 变量以及数据类型

2.1 变量

变量就是用来存东西的,在Python中,存储一个数据,需要一个叫做变量的东西程序就是用来处理数据的,而变量就是用来存储数据的变量起名要有意义程序中为了更充分的利用内存空间以及更有效率的管理内存,变量是有不同的类型的,如下所示:

 ​编辑

2.2 标识符和关键字

标识符命名规则:

1.标识符的组成:标识符由字母、下划线和数字组成,且数字不能开头,且不能是关键字2.见名知意;标识符是区分大小写的2.驼峰命名法
小驼峰命名法:            ※ 第一个单词小写,后面的每个单词首字母大写,如:userName 、 myName大驼峰命名法:           ※ 每个单词的首字母都大写,如:UserName 、 FirstName 、 LastName           ※  python中推荐的是用下划线"_" 来连接所有单词,如:user_name / my_name

关键字

Python一些具有特殊功能的标识符,这就是所谓的关键字,是Python已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标识符可以通过以下命令进行查看当前系统中Python的关键字在交互模式下:import keywordkeyword.kwlist

3. 输入函数

3.1 Python2

在Python中,获取键盘输入的数据的方法是采用 raw_input 函数,看如下示例:
#-*-coding:utf-8-*-
passwd = raw_input(" 请输入密码:")

 输出数据
print( " 您刚刚输入的密码是:%s" %passwd )

input( )函数与raw_input( )类似,但其接受的输入必须是表达式。
a=1
b=2
c= input(“请输入:”)

3.2 Python3 版本

输入格式python3版本中没有raw_input()函数,只有input()并且 python3中的input与python2中的raw_input()功能一样
c=input("请输入:")
请输入:123
c=int(input("请输入要计算的数:"))
输入要计算的数 

Python中的输出格式化输出在程序中,看到了%这样的操作符,这就是Python中格式化输出。
age = 28
name = " 阿福"
print(" 我的姓名是%s, 年龄是%d"%(name,age),end=”\t”)

格式化符号
格式符号转换
%c字符
%s通过str() 字符串转换来格式化
%d有符号十进制整数
%f浮点实数
运算符
运算符描述实例
+两个对象相加 a + b 输出结果 7
-得到负数或是一个数减去另一个数 a - b 输出结果 3
*两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果10
/x除以y  a/ b 输出结果 2,python2中是2,python3中是2.5
//取整除取商,5//2得2;返回商的整数部分 9//2 输出结果 4 。
%取余返回除法的余数 a % b 输出结果 1
**返回x的y次幂 a**b 为5的2次方, 输出结果 25
=赋值运算符把=号右边的结果给左边的变量 num=1+2*3 结果num的值为7
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符  c *= a 等效于 c = c * a
/=除法赋值运算符  c /= a 等效于 c = c / a
%=取模赋值运算符  c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c ** a
//=取整除赋值运算符  c //= a 等效于 c = c // a

03. 基础

1. If 判断语句

小总结:

如果某些条件满足,才能做某件事情,而不满足时不允许做,这就是所谓的判断不仅生活中有,在软件开发中“判断”功能也经常会用到

1.1if 判断语句语法

if语句是用来进行判断的,其使用格式如下:if要判断的条件:  条件成立时,要做的事情 

1.2if 语句的应用

age = 18
print("------if 判断开始------")
if age >= 18:
print(" 我已经成年了,可以做成年人做的事情了")
print("------if 判断结束------") 

注意:代码的缩进为一个tab 键,或者4 个空格

1.3练一练

要求:从键盘获取自己的年龄,判断是否大于或者等于18岁,如果满足就输出“已成年,可以承担法律责任”1. 使用input从键盘中获取数据,并且存入到一个变量中2. 使用if语句,来判断 age>=18是否成立3. 支持Python2和Python3都能正常运行
age=int(input("请输入你的年龄"))
if age >=18:
    print("已成年,可以承担法律责任")
else:
    print("年龄不够滚蛋!!!")

1.1. 运算符

**1.1.1 逻辑 **( **关系 **) 运算符

运算符逻辑表达式描述
andx and y布尔"与" - 如果 x 为 False,x and y 返回False,否则它返回 y 的计算值。
orx or y布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。
notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

**1.1.2 比较 **( **关系 **) 运算符

运算符描述示例
==检查两个操作数的值是否相等,如果是则条件变为真。如a=3,b=3则(a == b)为 True.
!=检查两个操作数的值是否相等,如果值不相等,则条件变为真。如a=1,b=3则(a != b)为 True.
<>检查两个操作数的值是否相等,如果值不相等,则条件变为真。Python和在Pascal等特有方式,java和c没有,在Python3中废弃了如a=1,b=3则(a <> b True。这个类似于 !=运算符
检查左操作数的值是否大于右操作数的值,如果是,则条件成立。如a=7,b=3则(a > b) 为 True.
<检查左操作数的值是否小于右操作数的值,如果是,则条件成立。如a=7,b=3则(a < b) 为 False.
>=检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。如a=3,b=3则(a >= b)为True.
<=检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。如a=3,b=3则(a <= b) 为 True.

2. If-else

2.1 if-else 的使用格式

if 条件:
满足条件时要做的事情1
满足条件时要做的事情2
满足条件时要做的事情3
...(省略)...
else:
不满足条件时要做的事情1
不满足条件时要做的事情2
不满足条件时要做的事情3
...(省略)... 

#去办理个人贷款买房手续,只需要你或者你媳妇去
you = input("你本人去吗?(去或者不去):")
yourWife = input("你媳妇去吗?(去或者不去):")
if you == "去" or yourWife == "去":
    print("恭喜,至少有一人前来,可以办理!")
else:
    print("必须有一人前来办理!")

2.2 elif 的格式

if xxx1:
事情1
elif xxx2:
事情2
elif xxx3:
事情3 

"""
判断年龄属于哪个时期
0-3 婴幼儿期
3-12 儿童期
12-17 青春期
18-24 青年期
25-44 壮年期
45-60 中年期
60-100 老年期
100-$  修仙期
"""
age = int(input("请输入年龄:"))
if age >0 and age <=3:
    print("婴幼儿期")
elif age>3 and age <=12:
    print("属于儿童期")
elif age>12 and age <=17:
    print("属于青春期")
elif age>17 and age <=24:
    print("属于青年期")
elif age>24 and age <=44:
    print("属于壮年期")
elif age>44 and age <=60:
    print("属于中年期")
elif age>60 and age <=100:
    print("属于儿老年期")
elif age>100:
    print("属于修仙期!")
else:
    print("这个世界你从未来过!")

注意:elif 必须和if 一起使用,否则出错

2.3 If 嵌套

if 条件1:
满足条件1 做的事情1
满足条件1 做的事情2
...(省略)...
if 条件2:
满足条件2 做的事情1
满足条件2 做的事情2
...(省略)...
else:
不满足条件2做的事情1
不满足条件2做的事情2
...(省略)... 

2.4 猜丁壳游戏

 游戏要求:用户先出,和系统所出进行比较。
import random
"""
0代表剪刀 1代表石头 2代表布
"""
player = int(input("请输入 剪刀(0) 石头(1)布(2):"))
computer = random.randint(0,2)
print(player,computer)
if player<=2 and player>=0:
    if (player==0 and computer == 2) or (player==1 and computer==0) or (player==2 and computer==1):
        print("你赢了")
    elif player==computer :
        print("平手")
    else:
        print("你输了")
else:
    print("输入内容错误,请重新输入")

3. while 循环

3.1 Whlie 循环的书写方式:

num = 1
while num <= 10:
print(num)
num += 1 

3.2 while 循环的格式

while 条件:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
...(省略)... 

3.3 while 循环注意事项:

i=i+1别忘记写,否则条件永远满足,一直执行

3.4 while 练习:

计算 1~100 之间偶数的累积和(包含1 1 和 100 )
i = 1
sum = 0
while i<=100:
    if i % 2 ==0:
        sum = sum+i
    i+=1
sum
print("1-100的累计和为:%s"%sum)

while嵌套的格式
while 条件1:
条件1满足时,做的事情1
条件1满足时,做的事情2
条件1满足时,做的事情3
...(省略)...
while 条件2:
条件2满足时,做的事情1
条件2满足时,做的事情2
条件2满足时,做的事情3

用while打印下边的形状
* ** *** **** *****
i=1
while i<=5:
    j=1
    while j<=i:
        print("*",end=" ")
        j+=1
    print()
    i+=1
#外层循环执行一次,内层循环执行一遍。

4. For循环

4.1 for循环的格式

for 临时变量 in 列表或者字符串等:
    循环满足条件时执行的代码
else:
    循环不满足条件时执行的代码 

4.2 for-else循环的格式

name = ''
for x in name:
    print(x)
else:
    print(" 没有数据")

4.3 for循环实例

for i in range(6):
    print("* "*i)
for i in range(4,0,-1):
    print("* "*i)
print("="*50)
i=1
while i<=9:
    if i<=5:
        print("* "*i)
    else:
        print("* "*(10-i))
    i+=1

4.4 for-循环中的break和continue

break:遇到它跳出整个循环(结束循环),如果是循环嵌套,break在内循环,退出的是内循环continue:遇到它跳出本次循环,紧接着执行下一次的循环
i = 0
while i<10:
    print("----")
    if i ==5:
        #continue #作用:跳过本次循环,执行下一次循环
        break   #作用:用来结束整个循环
    i = i + 1
print(i)

4.5 if 的各种真假判断

​编辑​编辑 

数字0表示假非0数表示真if xxx==YYY:看是否相等,相对就是True,否则就是Falseif xxxx :  看运算结果

4.6 range()函数的使用

函数语法range(start, stop[, step])参数说明:        •start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);        •stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5        •step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
>>> range (0,10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range (1,5)
[1, 2, 3, 4]
>>> range (0,30,5)
[0, 5, 10, 15, 20, 25]
>>> range (0,-10,-1)
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

👑👑👑结束语👑👑👑