🍁作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道TOP1🏅 阿里云ACE认证高级工程师🏅
✒️个人主页:小鹏linux
💊个人社区:小鹏linux(个人社区)欢迎您的加入!
目录
01.初识
1.认识python
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.1Web应用开发
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.1python2
在大多数Linux系统上都已经有集成好了Python开发环境,不需要安装就可以执行Python代码了 验证Python2环境是否搭建好Ctrl + Alt + t 打开终端输入命令:python 退出Python2环境命令:exit()或者Ctrl+d |
3.2python3
验证Python3环境是否搭建好Ctrl + Alt + t 打开终端输入命令:python |
python3安装过程
前期准备工作:安装依赖 |
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.上传压缩包 rz 2.解压到指定位置 |
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.1Python执行过程解析
一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。在计算机内部,Python 解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。 由于你只需要把你的Python 程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python 程序更加易于移植 |
4.2Python解释器。
当我们编写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.1Ipython简介
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 keyword keyword.kwlist |
3.输入函数
3.1Python2中
在Python中,获取键盘输入的数据的方法是采用 raw_input 函数,看如下示例: |
#-*-coding:utf-8-*- passwd = raw_input(" 请输入密码:")
输出数据 |
print( " 您刚刚输入的密码是:%s" %passwd )
input( )函数与raw_input( )类似,但其接受的输入必须是表达式。 |
a=1 b=2 c= input(“请输入:”)
3.2Python3版本
输入格式 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逻辑(关系) 运算符
运算符 |
逻辑表达式 |
描述 |
and |
x and y |
布尔"与" - 如果 x 为 False,x and y 返回False,否则它返回 y 的计算值。 |
or |
x or y |
布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。 |
not |
not 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.1if-else的使用格式
if 条件: 满足条件时要做的事情1 满足条件时要做的事情2 满足条件时要做的事情3 ...(省略)... else: 不满足条件时要做的事情1 不满足条件时要做的事情2 不满足条件时要做的事情3 ...(省略)...
#去办理个人贷款买房手续,只需要你或者你媳妇去 you = input("你本人去吗?(去或者不去):") yourWife = input("你媳妇去吗?(去或者不去):") if you == "去" or yourWife == "去": print("恭喜,至少有一人前来,可以办理!") else: print("必须有一人前来办理!")
2.2elif的格式
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.3If嵌套
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.1Whlie循环的书写方式:
num = 1 while num <= 10: print(num) num += 1
3.2while循环的格式
while 条件: 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)...
3.3while循环注意事项:
i=i+1别忘记写,否则条件永远满足,一直执行 |
3.4while练习:
计算 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.1for循环的格式
for 临时变量 in 列表或者字符串等: 循环满足条件时执行的代码 else: 循环不满足条件时执行的代码
4.2for-else循环的格式
name = '' for x in name: print(x) else: print(" 没有数据")
4.3for循环实例
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.4for-循环中的break和continue
break:遇到它跳出整个循环(结束循环),如果是循环嵌套,break在内循环,退出的是内循环 continue:遇到它跳出本次循环,紧接着执行下一次的循环 |
i = 0 while i<10: print("----") if i ==5: #continue #作用:跳过本次循环,执行下一次循环 break #作用:用来结束整个循环 i = i + 1 print(i)
4.5if 的各种真假判断
编辑编辑
数字0表示假 非0数表示真 if xxx==YYY: 看是否相等,相对就是True,否则就是False if xxxx : 看运算结果 |
4.6range()函数的使用
函数语法 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]
👑👑👑结束语👑👑👑
为大家推荐一款刷题神奇 点击链接访问牛客网
各大互联网大厂面试真题。基础题库到进阶题库等各类面试题应有尽有!
牛客网面经合集,满足大厂面试技术深度,快速构建Java核心知识体系大厂面试官亲授,备战面试与技能提升,主要考点+主流场景+内功提升+真题解析