python
序言
- 这篇文章是什么?
这篇文章介绍了python3的基础操作,会采用概念+例子的形式。写的通俗易懂,供自己忘记时查阅和大家参考学习使用。 - 为什么写这篇文章?
因为工作需要,需要经常查阅一些python基础语法的东西,索性把它系统性的整理出来,回顾一下。 - 说明
我这里使用的环境是python3.9+pycharm.
假设你已经安装好了基础的环境,我们这里直接展示操作。我写的不完全正确,希望发现的同学及时帮我指正出来。
python概述
- 什么是python
(1)python是一门编程语言(程序设计语言)
(2)python是一门跨平台,开源,免费的解释型高级动态编程语言。
(3)语言:
自然语言:人类能识别的语言,英语,汉语,法语。。
机器语言:机器能识别的语言,二进制(01010)
程序设计语言:由文本构成文件,有固定语法(人和机器都能读懂的语言—人和机器的桥梁) —java c++ c python c# php - python的特点
(1)语法简洁:约等于java的五分之一
(2)拥有强大的类库:145000
(3)胶水语言:粘java的类库,c的类库,其他语言类库
(4)纯面向对象:python一切皆对象
(5)跨平台:通过虚拟机,可以跨平台
python的运行机制
- 常见的运行机制:
(1)编译型:源代码,通过编译器,生成一个可执行文件,下一次运行,直接运行可执行文件 优势:效率高 劣势:不能跨平台
(2)解释性:源代码,通过解释器,逐行翻译运行,下一次运行,需要重新翻译 优势:可以跨平台(需要有解释器进行配合) 劣势:执行效率低 - python有两种运行机制:
(1)以脚本执行运行:纯解释性语言
(2)先编译后解释:
源文件:.py结尾的文件
编译器:compiler
字节码文件:.pyc(本质:是一个二进制文件,计算机不能直接识别,只能由解释器来识别)
解释器:interpretere—PVM(包含了解释器)
python解释器
(1)CPython:标准的实现方式,是官方提供的解释器(由c语言实现的解释器)
(2)Jython:由java实现的解释器
(3)IronPython:是由.net实现的解释器
(4)PyPy:是由python自己实现的解释器
python的应用
web开发 爬虫 数据分析 数据挖掘 人工智能
python基础语法
- 1.输出函数
print(*args, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
(1)*args:可以传入多个数据
(2)sep: 分割符号(当传入多个数据时生效)
(3)end:结尾符号
(4)file:文件流
(5)flush:设置缓冲流
代码:
print('a', 'b')
print('a', 'b', sep='***', end='$$$')
效果:
a b
a***b$$$
- 2.输入函数
input(): 从控制台获取用户输入的数据
(1) input(pompt=None)
pompt:在获取用户数据之前,显示的提示信息(没有类型限制)
(2) input会将获取的数据,以字符串的形式进行返回
(3) input在执行时,会等待用户输入数据,用户输入完毕(触发了回车)之后才会继续运行
这种行为称之为阻塞
代码:
a = input('请输入一个你心里(❤ ω ❤)的数字:')
print(a, type(a))
b = 520 + int(a)
print(b)
效果:
请输入一个你心里(❤ ω ❤)的数字:1
1 <class 'str'>
521
- 3.变量
没有默认值
先定义后使用
变量中存储的时数据的首地址
变量名。要符合标识符命名规范。 - 4.标识符命名规范
(1) 语法规范:
合法标识符:数字(数字不能开头),字母,下划线
大小写敏感
不能使用关键字和保留字
没有长度限制
(2)开发习惯
望文生义
大小写:包名全小写,类名大驼峰,函数名/变量名/方法名:小驼峰,常量:全大写,其他命名:单词和单词之间用下划线连接(单词全小写)
[注] 驼峰命名法: HelloWorld:大驼峰 helloWorld:小驼峰
关键字:python中内置的,具有特殊含义的字符,且这些字符不可更改
if else while or and not True False class def assert as with is yield pass print
保留字:python中预制使用的函数名,方法名,类名等字符,是可以被修改的(一旦修改再也不能起原作用,已被修改)
input type id zip next iter int str bool dict float set list tuple frozenset(不可变集合)
- 5.数据类型
python没有类型的概念(源码中int是一个class) python只有一种类型:对象类型
a = 10 a=int(10) 相当于创建对象 整型对象
所有的数据都是某一个类型的数据, 所有的数据类型的类型—类型类
(1)整型:int 1 2 3
(2)浮点型:float 1.5
科学计数法,也是浮点型 eg:1.23e+8
浮点数是由定点整数和定点小数构成 1. .5
如何存储:槽(最多四个字节,<=4) ,通过两个slot(槽)分别存储两个定点数。占内存,开发是尽量避免浮点型,后面会学到decimal.Decimal,可以尝试使用
(3)布尔型:bool
True:1 # True 和 False 是关键字
False:0
任何非零:True
任何零:False (None空也算零) 例如:[] '' 0
【注】在Python中空为None,并不是null或NULL
(4)字符串:str
字符串天生具有跨平台特性
分类:
单引号字符串
双引号字符串
三引号字符串
(5)空值:None
(6)其他复杂数据:
list:列表 dict:字典 tuple:元组 set:集合 frozenset:不可变集合 pipe:管道 queue:队列
- 6.数据类型转换
要转换成谁就使用谁
数据之间转换要兼容
代码:
a = 123
b = str(a)
print(b, type(b))
c = float(a)
print(c, type(c))
a = '123'
print(int(a))
print(float('1.5'))
print(float('1.'))
效果:
123 <class 'str'>
123.0 <class 'float'>
123
1.5
1.0
- 7.获取类型
(1)type(obj) 本质是一个类,执行慢;用起来方便 返回的是obj参数的类型
(2)isinstance() 本质是一个函数,执行快;判断obj是不是class类型 返回bool类型
代码:
a = 10
print(a, type(a))
print(isinstance(a, int))
效果:
10 <class 'int'>
True
- 8.运算符
(1)一般运算符
# + - * /(真除法) %(模运算) 和字符串格式化
# **(幂运算,是一元运算符) //(地板除法)向下取整
print(10/3)
print(10%3)
(2)赋值运算符
= += -= *= /= **= //=
(3)布尔运算符(比较运算符)
eg: > < >= <= == !=
a>b>c 解释器解释a>b and b>c(但java中是错的)
(4)逻辑运算符
and or not
(5)三元运算符
(值1 if 布尔值 else 值2) 如果bool值为真,返回值1,否则返回值2
(6)集合运算符
交集 & 并集 | 对称差集 ^ 差集 -
-9.优先级
(1)四则运算:先乘除后加减 ():括号,干扰优先级
(2)元和优先级的关系:元数越多,优先级越低
(3)逻辑运算符:not> and > or
流程控制
- if-else结构
# 1. if-else结构
# if
# if-else
# if-elif-else
代码:
age = 25
if age > 18:
print('可以玩游戏了')
if age <= 18:
print('好好学习')
else:
print('可以适当玩游戏了')
if age <= 12:
print('你跑出来你妈妈知道吗')
elif age <= 24:
print('年轻人应该报效祖国')
else:
print('可以做一些嘿嘿嘿的事情了')
效果:
可以玩游戏了
可以适当玩游戏了
可以做一些嘿嘿嘿的事情了
补充:
1. 嵌套使用:if-else可以任意嵌套使用
2. python可以避免else悬挂问题,因为python有严格的缩进方式
3. pass关键字:当代码块中不书写人和代码时使用
定义一个变量,定义变量没有代码块,所以下一行定义,必须和自己对齐,表示同一层代码
代码块:(有冒号)只要缩进不一样,就是一个新的代码块
不同的代码拥有独立的缩进空间
缩进表示代码块,代码块中不能不写代码,可以引进pass
- 断言
关键字:assert
用法:assert 布尔表达式
含义:布尔表达式为真,程序正常执行,如果为假,抛出异常:AssertionError
age = 25
if age < 24:
print('年轻人应该好好学习')
else:
assert '太大了'
- while
循环:重复执行某段代码
1.语法:
while 布尔表达式:
循环体
2. 注意:
死循环:重复执行某一段代码永不停止
死循环不一定是坏的,服务器需要死循环支持执行(不宕机)
补充:
while 1 和while True 哪个执行效率高?
python2: while 1效率高
原因:
1 是一个整数,是一个不可变类型的数据,执行while操作时,不需要判断1的值是不是本身
True是一个保留字,可以被赋值,执行while时,需要判断True中的值是不是True本身
python3: 一样高
原因:
1是不可变的,True是关键字,也是不可变的
- for 循环(使用心得:思考行列数)
for 循环也称计数循环
如果不知道循环次数,一般使用while
如果知道循环次数,一般使用for循环
语法:
for 变量 in 可迭代对象:
循环体
可迭代对象:拥有迭代器的对象,称之为可迭代对象
迭代器:(方便记忆,拥有多个元素且可以取出来)
代码:
for i in 'hello':
print(i)
效果:
h
e
l
l
o
循环误区:
最后一次循环也算,只是没执行循环体,判断条件也属于循环
最后一次没取到值(并不是取到空值)抛出stopIteration()异常
循环体n次:for n+1次
- 补充
break
跳出当前循环,且之后的循环不再执行
continue
跳过当前循环,且之后的循环不受影响
循环嵌套
循环之间可以任意嵌套
注意:不建议嵌套三层以上,会大大降低执行效率