当前位置:首页>python>第 2 章:Python基础语法

第 2 章:Python基础语法

  • 2026-10-12 06:23:54
第 2 章:Python基础语法

变量与数据类型

如果我们想去描述一个人,可以用一些特征去描述,比如,姓名:张三,年龄:20,身高:175.5。这里面的姓名、年龄、身高就相当于是变量。

变量,直观的理解就是可以变化的量。这个人的姓名叫张三,另一个人的姓名可以叫李四。专业点理解,变量本质上是内存地址的“标签”,这避免了直接操作内存地质的复杂性,让编程变得简单起来。

那么在Python中我们就可以这么写变量和对应的值:

姓名 = '张三'年龄 = 20身高 = 175.5

=的左边就是变量,右边就是存储的数据。用中文作为变量也是符合语法规则的,但在实际开发中我们一般用英文字符来表示变量,这样能够避免一些不必要的麻烦,所以我们会这样定义变量:

name = '张三'age = 20height = 175.5

描述张三的姓名、年龄、身高的数据你会发现它们的分类是不一样的,比如姓名是一种字符,年龄是一个整数,而身高是带有小数的,数据类型其实就是对数据的一种分类,数据类型说明了数据的本质特征,也定义了它可以进行哪些操作。

Python中的数据类型简单来说可以分为内置类型和用户自定义类型,下面列一下常见的内置类型。

分类
具体类型
说明
基本类型
整数(int)
无小数点的数字,如:1,-5
浮点数(float)
带小数点的数字,如:3.14,-2.1
布尔值(bool)
表示真假,仅有两个值:True,False
复数(complex)
由实部和虚部组成,如1+2j,虚部用 j或 J标记
序列类型
字符串(str)
字符序列,用单引号、双引号或三引号包裹,如:'Python','hello, world'
列表(list)
可变元素列表,元素可重复,类型可混合,如:[1,2,'a']
元组(tuple)
不可变元素序列,如:(1,2,'a')
范围(range)
整数序列生成器,如 range(5) 表示 0-4 的整数范围
映射类型
字典(dict)
键值对集合,键唯一且不可变,如:{"name": "张三", "age": 20}
集合类型
集合(set)
无序不重复元素集合,如:{1, 2, 3}
冻结集合(frozenset)
不可变集合,元素一旦定义无法修改,如 :frozenset({1, 2, 3})
二进制类型
bytes
不可变二进制数据,如:b"abc", bytes([65, 66])
bytearray
可变二进制数据,类似 bytes,但支持修改,如:bytearray(b'abc')
memoryview
内存视图对象,用于高效访问内存
None类型
NoneType
表示 “无值” 或 “空”,只有None

了解了Python的数据类型之后,我们可以尝试定义一些不同类型的变量。

age = 20 # 整数height = 175.5 # 浮点数has_money = False # 布尔值name = 'Python' # 字符串a_list = [1, 2, 'a'] # 列表 

在Python中有一个type()函数可以用来查看变量或数据的类型。示例如下:

name = '张三'print(type(name)) # 输出:<class 'str'>age = 20print(type(age)) # 输出:<class 'int'>height = 175.5print(type(height)) # 输出:<class 'float'>print(type(True)) # 输出:<class 'bool'>print(type(1)) # 输出:<class 'int'>a = [1,2,3]print(type(a)) # 输出:<class 'list'>b= (1, 2, 3)print(type(b)) # 输出:<class 'tuple'>

变量命名规则

Python中变量的命名非常简单,但也需要遵守一定的规则,有一些是硬性规则,不遵守则会出现语法错误,有一些是软性规则,让代码更易阅读和维护。

硬性规则:

  • • 变量名必须以字母(a-z,A-Z)或下划线(_)开头,不能以数字开头。示例:name(合法),123name(非法)
  • • 变量中不能包含空格或特殊字符。特殊字符如 @, $, %, &, -, ! 等。注意,连字符(-)也是不允许的。示例:my name(非法),my@name(非法)
  • • 区分大小写。如name和Name是不同的变量
  • • 不能使用Python关键字。如:if = 20

可以通过下面的代码来查看Python中的关键字:

import keywordprint(keyword.kwlist)

软性规则:

  • • 推荐使用蛇形命名法,即全小写,多个单词用下划线连接,这是Python社区的主流风格。而且变量名最好做到见名知意。示例:student_name
  • • 常量用大写加下划线。示例:MAX_VALUE
  • • 类名用大驼峰,示例:class User
  • • 下划线有特殊的用法。单下划线(_)约定为模块/类的内部变量,是一种弱私有。双下划线(__)会触发 Python 的 “名称修饰” 机制,是一种强私有,在类的外部更难被访问。双下划线开头和结尾,是特殊方法,如__init__
  • • 不使用内置的函数名。避免使用Python中内置的函数作为变量名,如:list,str,print,否则会覆盖内置函数的功能。

更完整的代码规范可以参考官方的PEP 8(https://peps.python.org/pep-0008/)

当然我们不用去记忆这些繁琐的规则,因为有更好的方法去帮助我们去培养良好的编码习惯,比如安装一些代码检查插件,如:Pylint、Flake8、Black Formatter等

运算符

运算符是用来执行各种数学、逻辑、比较等操作的特殊符号,在Python中主要包括:算术运算符,赋值运算符,比较运算符,逻辑运算符,位运算符,成员运算符,身份运算符,三元条件运算符。下面进行具体的说明。

• 算术运算符,用于基本的数学运算。
运算符
描述
示例
+
加法
1 + 1 = 2
-
减法
2 - 1 = 1
*
乘法
1 * 2 = 2
/
除法
5 / 2 = 2.5
//
整除(向下取整)
5 // 2 = 2
%
取模
5 % 2 = 1
**
幂运算
2**4 = 16
• 赋值运算符,用于将值赋给变量。
运算符
描述
示例
=
基础赋值
x = 2
+=
加后赋值
x += 2
-=
减后赋值
x -= 2
*=
乘后赋值
x *= 2
/=
除后赋值
x /= 2
//=
整除后赋值
x // 2
%=
取模后赋值
x %= 2
**=
幂运算后赋值
x **= 2
&=
按位与后赋值
x &= 2
|=
按位或后赋值
x |= 2
^=
按位异或后赋值
x ^= 2
<<=
左移后赋值
x <<= 2
>>=
右移后赋值
x >>= 2
• 比较运算符,用于比较两个值,返回的结果是布尔值。
运算符
描述
示例
==
等于
1 == 1
!=
不等于
1 != 2
>
大于
2 > 1
<
小于
1 < 2
>=
大于等于
2 >= 1
<=
小于等于
1 <= 2
• 逻辑运算符,用于组合布尔表达式。
运算符
描述
示例
and
逻辑与
True and False
or
逻辑或
True or False
not
逻辑非
not True

逻辑与:两边都为True,结果才是True。逻辑或:至少一边为True,结果才为True。逻辑非:取反。

非零数值、非空序列视为True。零、None、空序列视为False。

利用这样的特性,我们看一些有意思的事情。

print(1 and 2) # 输出为2print(0 and 2) # 输出为0

这样的输出因为and是一种短路逻辑,也就是遇到一个False的值就直接返回,不在继续判断后面的表达式了,如果两个表达式都为True,那么就返回最后一个表达式的值。这里的1和2都是非零数值,所以认为是True,也就返回了最后一个值2,而0和2中,0人为是False,也就不进行后面表达式的判断了,就直接返回了0。

• 位运算符,对整数的二进制位进行操作。这属于底层操作,开发中一般很少用,一旦需要用的时候,就是进行高效操作的时候。
运算符
描述
示例
&
按位与
1 & 2
|
按位或
1 | 2
^
按位异或
1 ^ 2
~
按位取反
~2
<<
左移
1 << 2
>>
右移
1 >> 2
• 成员运算符,用于检查元素是否在序列(字符串、列表、元组、字典等)中,返回布尔值。
运算符
描述
示例
in
存在则返回True
x in y
not in
不存在则返回True
x not in y

下面看一个具体的例子:

s = 'abc's1 = 'a'print(s1 in s) # 输出Truex = 1y = (2,3,4)print(x not in y) # 输出True
• 身份运算符,比较两个对象是否为同一个对象(内存地址),返回布尔值。
运算符
描述
示例
is
是同一个对象则返回True
x is y
is not
不是同一个对象则返回True
x is not y

下面看一个具体的例子:

a = [1,2,3]b = aprint(a is b) # 输出Trueprint(a is not b) # 输出False
 • 三元条件运算符,也称为条件表达式,是一种简洁的判断语法。语法:x if condition else y。根据condition的真假返回x或y。

下面看一个选择两个数中较大的值的例子:

x = 1y = 2max = x if x > y else yprint(max)

类型转换

类型转换是指将一种数据类型转换为另一种数据类型。在一些场景下非常常见,比如实际需要的输入是一个数字,而用户输入的是一个字符串,这就需要将字符串转换为数字。Python中类型转换分为两种,一种是隐式转换,一种是显示转换。

隐式转换是自动转换,通常是将窄类型转换为宽类型,比如整数类型转换为浮点类型。

x = 1y = 1.1z = x + y # x会自动转换为float类型print(z, type(z)) # 输出:2.1 <class 'float'>

显示转换,也称强制类型转换,需要手动进行,Python中内置了一些用于显示转换的函数。

函数
说明
示例
int()
转换为整数
int('10') -> 10,int(1.2) -> 1
float()
转换为浮点数
float('3.1415926') -> 3.1415926
str()
转换为字符串
str(12) -> "12"
bool()
转换为布尔值
bool(0) -> False
list()
转换为列表
list('abc') -> ['a', 'b', 'c']
tuple()
转换为元组
tuple('abc') -> ('a', 'b', 'c')
set()
转换为集合
set([1, 1, 2]) -> {1, 2}
dict()
转换为字典
dict([('a', 1), ('b', 2)]) -> {'a': 1, 'b': 2}

代码规范

遵循代码规范能够提升代码的可读性、可维护性和一致性。我们上面提到过的PEP 8是得到广泛认可的规范,还有一个是PEP 20,它是一份简洁的Python设计哲学指南,可以通过运行import this这条简单的语句来查看。更多的情况下我们可以使用工具来辅助我们检查代码和格式化代码,如Pylint、Flake8、Black Formatter等。除了这些,这部分想着重提到的是缩进和注释。

• 缩进虽然Tab和空格都能表达缩进,而且Tab只需要点击一下,但是更建议是4个空格作为缩进,因为空格是强一致性的,而Tab在不同的环境下是不固定的。避免空格和Tab混用。每行代码长度不超过79个字符,超长时可以换行。
• 注释注释是为了给代码提示解释和说明,写注释是应该解释“为什么”而不是“做什么”,注释也要随着代码的修改做必要的更新。Python中有单行注释和文档字符串,单行注释以#开头,文档字符串用三个引号('''或""")开头。示例如下:
x = 10 # 这是单行注释示例def add(a, b):    """    计算两个数的和    """    return a + b

上面的代码我们用到了函数,在后面的章节会进行详细的介绍,这里先简单介绍一下Python中函数定义的语法:

def 函数名(参数列表):    """函数文档字符串(可选,用于说明函数功能)"""    函数体(实现功能的代码)    return 返回值(可选)

本章练习

至此,这一章的主要内容就写完了,我们来做一个练习:编写一个“简易计算器”,实现两个数字的加减乘除运算,并输出带注释的结果。

最新文章

随机文章