当前位置: 首页 > news >正文

python3基础语法梳理(一)

前沿

Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。
注意 官方宣布,2020 年 1 月 1 日, 停止 Python 2 的更新。
所以这次整理 以python3最新的版本和特性为主

Python3安装
python3安装比较简单,略过 如果有需要看这个博客

版本选择 3.13版本
在这里插入图片描述
在这里插入图片描述
这里我选择了windows嵌入式安装包 解压就可以直接用

在这里插入图片描述
Python3 基础语法

标识符规则
第一个字符必须以字母(a-z, A-Z)或下划线 _ 。
标识符的其他的部分由字母、数字和下划线组成。
标识符对大小写敏感,count 和 Count 是不同的标识符。
标识符对长度无硬性限制,但建议保持简洁(一般不超过 20 个字符)。
禁止使用保留关键字,如 if、for、class 等不能作为标识符。

注意 Python 3 允许使用 Unicode 字符作为标识符,可以用中文作为变量名,非 ASCII 标识符也是允许的了。

>>> π = 3.14159   # 合法
>>> π
3.14159
>>> 姓名 = "张三"  # 合法
>>> 姓名
'张三'

在这里插入图片描述
python3保留字

>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
类别关键字说明
逻辑值True布尔真值
False布尔假值
None表示空值或无值
逻辑运算and逻辑与运算
or逻辑或运算
not逻辑非运算
条件控制if条件判断语句
elif否则如果(else if 的缩写)
else否则分支
循环控制for迭代循环
while条件循环
break跳出循环
continue跳过当前循环的剩余部分,进入下一次迭代
异常处理try尝试执行代码块
except捕获异常
finally无论是否发生异常都会执行的代码块
raise抛出异常
函数定义def定义函数
return从函数返回值
lambda创建匿名函数
类与对象class定义类
del删除对象引用
模块导入import导入模块
from从模块导入特定部分
as为导入的模块或对象创建别名
作用域global声明全局变量
nonlocal声明非局部变量(用于嵌套函数)
异步编程async声明异步函数
await等待异步操作完成
其他assert断言,用于测试条件是否为真
in检查成员关系
is检查对象身份(是否是同一个对象)
pass空语句,用于占位
with上下文管理器,用于资源管理
yield从生成器函数返回值

检测标识符是否合法

>>> def is_valid_identifier(name):
...     try:
...         exec(f"{name} = None")
...         return True
...     except:                                                                                                                     ...          return False
...
>>> print(is_valid_identifier("2var"))  # False
False
>>> print(is_valid_identifier("var2"))  # True

python3常见数据类型

类别数据类型描述示例
数字类型int整数(不限大小)a = 42
float浮点数(带小数)b = 3.14
complex复数(实部 + 虚部)c = 2 + 3j
文本类型str字符串(文本序列)s = “Hello”
布尔类型bool逻辑值(True/False)flag = True
空类型NoneType表示无数据x = None
序列类型list可变有序序列lst = [1, “a”, True]
tuple不可变有序序列tup = (1, “a”, True)
range不可变的数字序列(常用于循环)r = range(5)
映射类型dict键值对集合(无序)d = {“name”: “Alice”, “age”: 25}
集合类型set无序不重复元素集合s = {1, 2, 3}
frozenset不可变的 setfs = frozenset([1, 2, 3])
二进制类型bytes不可变字节序列(0-255)b = b"hello"
bytearray可变字节序列ba = bytearray(b"hello")
memoryview内存视图(直接访问二进制数据)mv = memoryview(b"hello")

注意:Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True,但可以通过 is 来判断类型。

可变 vs 不可变
可变类型:listdictsetbytearray(可修改内容)。
不可变类型:intfloatstrtuplefrozensetbytes(创建后不能修改)。
特殊类型
range:常用于循环(如 for i in range(10))。
NoneType:表示空值,通常用于初始化变量。
类型检查
使用type()isinstance()判断数据类型:

isinstance 和 type 的区别在于:

  • type()不会认为子类是一种父类类型。
  • isinstance()会认为子类是一种父类类型。

示例一

print(type(10))         # <class 'int'>
print(isinstance([], list))  # True
>>> class A:
...     pass
... 
>>> class B(A):
...     pass
... 
>>> isinstance(A(), A)
True
>>> type(A()) == A 
True
>>> isinstance(B(), A)
True
>>> type(B()) == A
False
>>> issubclass(bool, int) 
True
>>> True==1
True
>>> False==0
True
>>> True+1
2
>>> False+1
1
>>> 1 is True
<python-input-12>:1: SyntaxWarning: "is" with 'int' literal. Did you mean "=="?1 is True
False
>>> 0 is False
<python-input-13>:1: SyntaxWarning: "is" with 'int' literal. Did you mean "=="?0 is False
False

什么会出现 SyntaxWarning?
Python 检测到你在用 is 比较一个字面量整数(如 1)和 True,这通常是代码错误(因为 is 比较的是身份,而不是值)。
Python 建议你使用 == 来比较值是否相等,除非你确实想检查是否是同一个对象。
在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。

不可变类型(Immutable)的底层逻辑

  1. 示例代码
a = 10  # 创建一个整数对象 10,变量 a 指向它
a = 11  # 创建一个新整数对象 11,变量 a 改为指向它
  1. 内存中的行为

    执行 a = 10 时:
    Python 在内存中创建整数对象 10,变量 a 是其引用(类似“标签”)。
    执行 a = 11 时:
    并非修改 10 这个对象,而是新建一个对象 11,并让 a 指向新对象。
    原来的 10 依然存在于内存中(如果没有其他引用,会被垃圾回收)。

  2. 验证方法
    id() 查看对象的内存地址变化:

>>> a = 10
>>> print(id(a))
140724023542984
>>> a = 11
>>> print(id(a))
140724023543016
>>>

对比可变类型(Mutable)的修改
以列表 list 为例:

>>> lst = [1, 2, 3]
>>> print(id(lst))
1858069687616
>>> lst[0] = 99
>>> print(id(lst))
1858069687616
>>>
  • 可变类型(如 list、dict)支持原地修改,对象的内存地址不变。

为什么说整数是不可变的?
因为整数对象 10 或 11 在内存中创建后:

  • 你无法通过任何操作改变 10 这个对象的值(例如让它变成 11)。
  • 所有看似“修改”的操作(如 a = a + 1)本质是创建新对象并重新绑定变量。

为什么设计不可变类型?

  • 安全性:避免意外修改(例如字典的键必须用不可变类型)。
  • 性能优化:小整数(如 -5 到 256)在 Python 启动时已缓存,重复使用同一对象。
  • 哈希支持:不可变对象可哈希(hash(10) 有效,hash([1,2]) 会报错)

注释
单行注释
Python中单行注释以 # 开头,实例如下:

>>> #!/usr/bin/python3
>>>
>>> # 第一个注释
>>> print ("Hello, Python!") # 第二个注释
Hello, Python!
>>>

多行注释

#!/usr/bin/python3# 第一个注释
# 第二个注释'''
第三注释
第四注释
'''"""
第五注释
第六注释
"""
print ("Hello, Python!")

行与缩进
python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。

if True:print ("True")
else:print ("False")

多行语句
Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠 \ 来实现多行语句

>>> item_one='N'
>>> item_two='B'
>>> item_three='C'
>>> total = item_one+\
... item_two+\
... item_three
>>>
>>> total
'NBC'
>>>      

类型运算总结

Number(数字)
注意:
1、Python可以同时为多个变量赋值,如a, b = 1, 2。
2、一个变量可以通过赋值指向不同类型的对象。
3、数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。
4、在混合计算时,Python会把整型转换成为浮点数。

String(字符串)
注意:
1、反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
2、字符串可以用+运算符连接在一起,用*运算符重复。
3、Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
4、Python中的字符串不能改变。

bool(布尔类型)
注意: 在 Python 中,所有非零的数字和非空的字符串、列表、元组等数据类型都被视为 True,只有 0、空字符串、空列表、空元组等被视为 False。因此,在进行布尔类型转换时,需要注意数据类型的真假性。

Tuple(元组)
注意:
1、与字符串一样,元组的元素不能修改。
2、元组也可以被索引和切片,方法一样。
3、注意构造包含 0 或 1 个元素的元组的特殊语法规则。
4、元组也可以使用 + 操作符进行拼接。

Set(集合)
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

Dictionary(字典)
注意:
1、字典是一种映射类型,它的元素是键值对。
2、字典的关键字必须为不可变类型,且不能重复。
3、创建空字典使用 { }。

bytes 类型
bytes 类型中的元素是整数值,因此在进行比较操作时需要使用相应的整数值。

相关文章:

  • 安全领域新突破:可视化让隐患无处遁形
  • Easy Excel
  • c语言(持续更新)
  • 使用DataX同步MySQL数据
  • OSPF域内路由
  • matlab时序预测并绘制预测值和真实值对比曲线
  • 6.9本日总结
  • DPC密度峰值聚类
  • PostgreSQL 与 SQL 基础:为 Fast API 打下数据基础
  • 卷积神经网络设计指南:从理论到实践的经验总结
  • CppCon 2015 学习:STL Algorithms in Action
  • CppCon 2015 学习:Transducers, from Clojure to C++
  • 时间同步技术在电力系统中的应用
  • 【习题】DevEco Studio的使用
  • 驭码 CodeRider 2.0 产品体验:智能研发的革新之旅
  • 用递归算法解锁「子集」问题 —— LeetCode 78题解析
  • 蓝桥杯 冶炼金属
  • 基于matlab策略迭代和值迭代法的动态规划
  • ubuntu清理垃圾
  • MySQL-事务(TRANSACTION-ACID)管理
  • wap网站制作怎么做/检测网站是否安全
  • 网站建设优選宙斯站长/雅思培训班价格一览表
  • 企业如何选择网站/百度的官方网站
  • h5网站制作费用/交换友情链接的目的
  • 营销网站的建设流程/沈阳seo关键词排名
  • wordpress发布文章出现404/搜索引擎优化seo信息