本篇文章是针对基础薄弱的小白或者想学习python的同学,将从python语言的发展开始讲起,带你真正从头入门python对想提升的同学来说,可以看看我之前写的文章领取一些资源本篇文章已经整理成pdf文档,方便同学们复制学习,点击下方窗口自取!。
知乎python基础shimo.im/docs/y3hGJ3gC3ywYThW6/地球的外星人君:一份超全的Python学习资料汇总!本篇文章就从以下几方面进行:python发展python版本环境安装
pip通用配置安装ipthonPycharm安装Python解释器基础语法内建函数程序控制python发展1989年圣诞节期间,为了打发无聊的时间,荷兰人Guido van Rossum(数学、计算机双硕士,2005年 加入Google,2013年加入DropBox),决心开发一种新的解释性脚本语言。
1991年初发布了第一个公开发行版由于他是英国BBC喜剧《Monty PythonsFlyingCircus》的忠实粉丝,因此为这门语言取名Python Python目前已经成为很多大学的编程课语言甚至在国内一些考试已经引入了Python。
科学计算方面、运维领域Python几乎已经成为最主要的编程语言,拥有非常方便快捷开发的库Python的哲学,可以使用 import this 查看Python之禅Python的版本目前企业中使用的主要版本还是2.x和3.x。
2.x最后一个版本是2.7,很多企业为了兼容老项目依然在维护从2020年开始,不在支持Python2,官 方还提供了一个倒计时网站https://pythonclock.org/ 3.x还在不断的扩充发展,当前主流版本是3.6+。
2015年9月发布3.5 2016年12月发布3.6 2018年6月发布3.7 2019年10月发布3.8 2020年10月发布3.9Python2和3的区别语句函数化,例如print(1,2)打印出1 2,但是2.x中意思是print语句打印元组,3.x中意思是函数的2 个参数
整除,例如1/2和1//2,3.x版本中/为自然除 3.x中raw_input重命名为input,不再使用raw_input round函数,在3.x中i.5的取整变为距离最近的偶数 3.x字符串统一使用Unicode
异常的捕获、抛出的语法改变2015年后,各主要国内外大公司都已经迁移到了Python3很多重要的Python第三方库也陆续停止了对 Python2的支持,所以,Python 3已经是必须学习的版本2018年Python3的使用比例已经超过了 85%。
在公司内,往往老项目维护维持2.x版本暂不升级,新项目使用3.x开发开发时,假如使用3.5.8,部署时应尽量保持一致,不要随意升级版本,更不要降低版本 不要迷信版本,学会一个版本,好好学会一门语言,其他都不是问题。
当然,也不要迷信语言 在最合适的领域使用最合适的语言截止2021年3月,3.8、3.9版本依然为不稳定版本环境安装官方网站下载不同平台https://www.python.org/downloads/Linux环境安装
如果是Ubuntu等桌面系统,都已经更新到了Python较新的版本但多数生产环境使用的还是红帽系统 CentOS7默认还是Python2.7,而开发环境如果是高版本Python就带来了问题为了不破坏当前系统使用,甚至以后为了多个Python项目部署(这些项目使用不同Python解释器版本),建议使用多版本工具。
也可以考虑容器部署Python应用程序多版本安装以CentOS8为例# yum install python36 python38 可以通过配置选择当前Python版本 # alternatives --config python3 查看当前版本 # python3 # python3 -V。
虚拟环境安装虚拟环境 # pip3 install virtualenv 新建一个普通用户# useradd python # echo python | passwd --stdin python # su - python
创建工程目录,并设置虚拟环境$ mkdir -p projects/cmdb $ mkdir venvs $ cd venvs $ virtualenv vcmdb $ ls vcmdb $ cd ~/projects/cmdb/ $ pwd /home/python/projects/cmdb (vcmdb) 表示虚拟环境 $ source ~/venvs/vcmdb/bin/activate (vcmdb) [python@localhost cmdb]$ python -V Python 3.8.0 (vcmdb) [python@localhost cmdb]$ deactivate $ python -V -bash: python: command not found $ python3 -V Python 3.8.0
基于3.6的虚拟环境,使用-p 指定3.6版本python解释器$ virtualenv -p /usr/bin/python3.6 vcmdb36 $ cd ~/projects/cmdb/ $ source ~/venvs/vcmdb36/bin/activate (vcmdb36) [python@localhost cmdb]$ python -V Python 3.6.8 (vcmdb36) [python@localhost cmdb]$ which python3 ~/venvs/vcmdb36/bin/python3 (vcmdb36) [python@localhost cmdb]$ which python ~/venvs/vcmdb36/bin/python (vcmdb36) [python@localhost cmdb]$ deactivate [python@localhost cmdb]$ python3 -V Python 3.8.0
Windows环境安装下载 Windows x86-64 executable installer ,按照提示安装即可。 勾选增加PATH路径,简单安装直接点击"Install Now"。
打开Windows命令行$ python -V Python 3.7.4 $ pip -V pip 19.0.3 (python 3.7) pip是Python包管理器,以后安装Python第三方包都需要它,它从3.x开始就集成在Python安装包里面了。
pip通用配置windows配置文件: ~/pip/pip.ini windows家目录,在“运行”中键入 . Linux配置文件: ~/.pip/pip.conf 内容,可参照 http://mirrors.aliyun.com。
的pypi帮助[global] index-url = https://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com
pip install pkgname 命令,是安装python包的命令安装ipython ipython 是增强的交互式Python命令行工具 $ pip list $ pip install ipython $ ipython
Jupyter 是基于WEB的交互式笔记本,其中可以非常方便的使用Python 安装Jupyter,也会依赖安装ipython的 $ pip install jupyter $ jupyter notebook help $ jupyter notebook --ip=0.0.0.0 --no-browser $ ss -tanl 。
常用快捷键 a之前插入代码块、b之后插入代码块 L 增加行号 运行代码块 shift + enter,选择下面的代码块 运行当前代码块 ctrl + enter Pycharm安装 Windows用户,官网下载Pycharm社区版,足够开发项目使用了。
按照软件安装向导提示安装即可 Ubuntu可在应用市场安装社区版查阅帮助 在线帮助,html 下载并打开官方文档,chm 第一手好的资料应该是帮助文档 https://www.python.org/downloads/wi。
ndows/IPython中 使用help(keyword),keyword可以是变量、对象、类、函数等 keyword? keyword??Python解释器
基础语法注释 # 井号标注的文本数字 整数int Python3开始不再区分long、int,long被重命名为int,所以只有int类型了 进制表示: 十进制10 十六进制0x10 八进制0o10 二进制0b10
bool类型,有2个值True、False浮点数float 1.2、3.1415、-0.12,1.46e9等价于科学计数法1.46*109 本质上使用了C语言的double类型 复数complex 1+2j或1+2J
字符串 使用 " 单双引号引用的字符的序列 和""" 单双三引号,可以跨行、可以在其中自由的使用单双引号 r前缀:在字符串前面加上r或者R前缀,表示该字符串不做特殊的处理 f前缀:3.6版本开始,新增f前缀,格式化字符串
字符串拼接 str(1) + , + b # 都转换成字符串拼接到一起 "{}-{}".format(1, a) # {}就是填的空,有2个,就使用2个值填充 # 在3.6后,可以使用插值 a = 100; b = abc f{a}-{b} # 一定要使用f前缀,在大括号中使用变量名
转义序列 \\ \t \r \n \ \" 上面每一个转义字符只代表一个字符,例如 \t 显示时占了4个字符位置,但是它是一个字符 前缀r,把里面的所有字符当普通字符对待,则转义字符就不转义了。
转义:让字符不再是它当前的意义,例如\t,t就不是当前意义字符t了,而是被\转成了tab键 缩进未使用C等语言的花括号,而是采用缩进的方式表示层次关系 约定使用4个空格缩进续行在行尾使用 \,注意\之后除了紧跟着换行之外不能有其他字符
如果使用各种括号,认为括号内是一个整体,其内部跨行不用 \ 标识符 标识符 1. 一个名字,用来指代一个值 2. 只能是字母、下划线和数字 3. 只能以字母或下划线开头 4. 不能是python的关键字,例如def、class就不能作为标识符
5. Python是大小写敏感的 标识符约定:不允许使用中文,也不建议使用拼音 不要使用歧义单词,例如class_ 在python中不要随便使用下划线开头的标识符 常量 一旦赋值就不能改变值的标识符 python中
无法定义常量字面常量 一个单独的不可变量,例如 12、"abc" 、2341356514.03e-9变量 赋值后,可以改变值的标识符标识符本质 每一个标识符对应一个具有数据结构的值,但是这个值不方便直接访问,程序员就可以通过其对应的标 识符来访问数据,标识符就是一个指代。
一句话,标识符是给程序员编程使用的语言类型 Python是动态语言、强类型语言 静态语言 事先声明变量类型,之后变量的值可以改变,但值的类型不能再改变 编译时检查 动态语言 不用事先声明类型,随时可以赋值为其他类型 。
编程时不知道是什么类型,很难推断 强类型语言不同类型之间操作,必须先强制类型转换为同一类型 print(a+1) 弱类型语言 不同类型间可以操作,自动隐式转换,JavaScript中 console.log(1+a) 。
但是要注意的是,强与弱只是一个相对概念,即使是强类型语言也支持隐式类型转换False等价False等价布尔值,相当于bool(value) 空容器 空集合set 空字典dict 空列表list 空元组tuple 。
空字符串 None 0
运算符Operator 算数运算符 +、-、*、/、//向下取整整除、%取模、**幂 注:在Python2中/和//都是整除 位运算符 &位与、|位或、^异或、<>右移 ~按位取反,包括符号位。
比较运算符 ==、!=、>、>=、<、 3 > 2 比较运算符,返回一个bool值 思考:1 == 1 吗? 1 > 1 吗? 逻辑运算符 与and、或or、非not 逻辑运算符也是短路运算符
and 如果前面的表达式等价为False,后面就没有必要计算了,这个逻辑表达式最终一定等价为 False1 and 2 and 0 0 and abc and 1 or 如果前面的表达式等价为True,后面没有必要计算了,这个逻辑表达式最终一定等价为True
1 or False or None 特别注意,返回值返回值不一定是bool型 把最频繁使用的,做最少计算就可以知道结果的条件放到前面,如果它能短路,将大大减少计算量赋值运算符 a = min(3, 5) 。
+=、 -= 、*=、/=、%=、//= 等 x = y = z = 10 赋值语句先计算等式右边,然后再赋值给变量 成员运算符 in、not in,用来判断是否是容器的元素,返回布尔值 身份运算符 is 、is not,用来判断是否是同一个对象
运算符优先级
单目运算符 > 双目运算符 算数运算符 > 位运算符 > 比较运算符 > 逻辑运算符 -3 + 2 > 5 and a > b 搞不清楚就使用括号长表达式,多用括号,易懂、易读表达式 由数字、符号、括号、变量等的组合。
有算数表达式、逻辑表达式、赋值表达式、lambda表达式等等 Python中,赋值即定义Python是动态语言,只有赋值才会创建一个变量,并决定了变量的类型和值 如果一个变量已经定义,赋值相当于重新定义。
内建函数
print(1,2,3,sep=\n, end=***) type(1) # 返回的是类型,不是字符串 type(abc) # 返回的是类型,不是字符串 type(int) # 返回type,意思是这个int类型由type构造出来 type(str) # 返回type,也是类型 type(type) # 也是type print(isinstance(1, int)) print(isinstance(False, int)) # True
程序控制顺序 按照先后顺序一条条执行 例如,先洗手,再吃饭,再洗碗 分支 根据不同的情况判断,条件满足执行某条件下的语句 例如,先洗手,如果饭没有做好,玩游戏;如果饭做好了,就吃饭;如果饭都没有做,叫外卖
循环 条件满足就反复执行,不满足就不执行或不再执行 例如,先洗手,看饭好了没有,没有好,一会来看一次是否好了,一会儿来看一次,直到饭好了,才可是吃饭这里循环的条件是饭没有好,饭没有好,就循环的来看饭好了没有。
单分支if condition: 代码块 if 1<2: # if True: print(1 less than 2) # 代码块 condition必须是一个bool类型,这个地方有一个隐式转换bool(condition),相当于False等价
if 语句这行最后,会有一个冒号,冒号之后如果有多条语句的代码块,需要另起一行,并缩进 if、for、def、class等关键字后面都可以跟代码块 这些关键后面,如果有一条语句,也可以跟在这一行后面例如 if 1>2: pass 。
多分支if condition1: 代码块1 elif condition2: 代码块2 elif condition3: 代码块3 ...... else: 代码块 a = 5 if a= 0 print(zero) else: # 相当于 a > 0 print(positive)
多分支结构,只要有一个分支被执行,其他分支都不会被执行 前一个条件被测试过,下一个条件相当于隐含着这个条件 # 嵌套 a = 5 if a == 0: print(zero) else: if a > 0: print(positive) else: print(negative)
while循环 while循环多用于死循环,或者不明确知道循环次数的场景while cond: block while True: # 死循环 pass a = 10 while a: # 条件满足则进入循环 print(a) a -= 1
上例执行结果是什么? 为什么? 会不会打印出0?要注意边界的分析 如果a=-10可以吗?如何改?回忆一下,False等价是什么?for语句 for element in iteratable: # 可迭代对象中有元素可以迭代,进入循环体 block for i in range(0, 10): print(i)
# 计数器 for i in range(0): print(i) print(---------) for i in range(-2): print(i) print(---------) for i in range(1): print(i)
range(i),i大于0,相当于计数器 continue 跳过当前循环的当次循环,继续下一次循环for i in range(0, 10): if i % 2 != 0 : continue print(i) for i in range(10): if i % 2 != 0 : continue print(i) for i in range(10): if i & 1: continue print(i) 。
break 结束当前循环 练习:计算1000以内的,从7开始,被7整除的前15个正整数(for循环) # 计算1000以内的被7整除的前15个正整数 count = 0 for i in range(7, 1000, 7): print(i) count += 1 if count >= 15: print(count) break
总结 continue和break是循环的控制语句,只影响当前循环,包括while、for循环 如果循环嵌套, continue和break也只影响语句所在的那一层循环 continue和break 只影响循环
,所以 if cond: break 不是跳出if,而是终止if外的break所在的循环 分支和循环结构可以嵌套使用,可以嵌套多层由于字数限制,还有else子句、三元表达式等内容没有介绍,本篇文章已经整理成pdf文档,需要的点击下方卡片领取:。
亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。