当前位置:首页>python>Python基本语法和数据类型详解

Python基本语法和数据类型详解

  • 2026-10-11 08:05:08
Python基本语法和数据类型详解

Python 基础语法笔记

变量和赋值

变量命名规则

基本规则:

  • 变量名由字母、数字、下划线组成
  • 必须以字母或下划线开头,不能以数字开头
  • 区分大小写(age 和 Age 是两个不同的变量)
  • 不能使用Python关键字作为变量名

有效变量名示例:

username = "John"
user_age = 25
_user_id = 123
MAX_VALUE = 100
count2 = 5

无效变量名示例:

2user = "Tom"# 数字开头
user-name = "Bob"# 包含连字符
if = 10# 使用关键字
class = "A"        # 使用关键字

赋值语句

基本赋值:

  • 简单赋值
x = 10
name = "Alice"
is_valid = True
  • 多重赋值
a = b = c = 0# 三个变量都赋值为0
x, y, z = 1, 2, 3# 分别赋值
  • 赋值操作的本质:Python中变量存储的是对象的引用
a = [1, 2, 3]
b = a              # b和a指向同一个列表对象
b.append(4)
print(a)           # 输出:[1, 2, 3, 4](a也被修改)

动态类型特性

类型动态推断:

# 变量类型可以随时改变
var = 100# 现在是int类型
print(type(var))   # <class 'int'>

var = "Hello"# 现在是str类型
print(type(var))   # <class 'str'>

var = 3.14# 现在是float类型
print(type(var))   # <class 'float'>

基本数据类型

类型
说明
int
整数,Python3中int和Long整合
float
小数
complex
复数,如:2+3j、complex(2,3)
bool
布尔值,True(1)/False(0)。逻辑判断中,非零数字或非空容器为True,反之为False
str
字符串,不可变序列。用单引号/双引号(不支持换行)或三引号(支持换行)
list
列表,可变序列,使用中括号,如:[1, 2, 3]
tuple
元组,不可变序列,使用小括号,如:(1, 2, 3)
dict
字典,可变映射,存储键值对,使用{},如:{"key1": "value1", "key2": "value3"}
set
可变集合,无序、元素不重复,使用{},如:{1, 2, 3}。支持数学集合操作:并集(|)、交集(&)、差集(-)

数字类型

整数(int)

# 十进制整数
num1 = 42
num2 = -100
num3 = 0

# 其他进制表示
binary = 0b1010# 二进制:10
octal = 0o52# 八进制:42
hexadecimal = 0x2A# 十六进制:42

浮点数(float)

# 标准表示
pi = 3.14159
price = 19.99
temperature = -5.5

# 科学计数法
large_num = 1.23e6# 1.23 × 10^6 = 1230000
small_num = 5.67e-3# 5.67 × 10^-3 = 0.00567

复数(complex)

# 复数表示
c1 = 3 + 4j# 实部3,虚部4
c2 = complex(2, -3) # 2 - 3j

# 访问实部和虚部
print(c1.real)      # 输出:3.0
print(c1.imag)      # 输出:4.0

布尔类型(bool)

# 布尔值
is_true = True
is_false = False

# 布尔运算
print(TrueandFalse)   # False
print(TrueorFalse)    # True
print(notTrue)         # False

# 其他类型转布尔
print(bool(0))          # False
print(bool(1))          # True
print(bool(""))         # False(空字符串)
print(bool("Hello"))    # True
print(bool([]))         # False(空列表)
print(bool([1, 2]))     # True

字符串(str)

创建

# 单引号
str1 = 'Hello'
str2 = 'It\'s a book'# 转义单引号

# 双引号
str3 = "World"
str4 = "He said \"Hello\""# 转义双引号

# 三引号(多行字符串)
str5 = '''这是
多行
字符串'''


str6 = """另一个
多行
字符串"""

基本操作

# 索引和切片
text = "Python Programming"
print(text[0])      # P
print(text[7:18])   # Programmin
print(text[::-1])   # gnimmargorP nohtyP

# 连接和重复
greeting = "Hello" + " " + "World"
repeated = "Ha" * 3# "HaHaHa"

# 常用方法
text = "  Python Programming  "
print(text.strip())      # 去首尾空格
print(text.lower())      # 转小写
print(text.upper())      # 转大写
print(text.startswith("Python"))  # True
print(text.endswith("ing"))      # True
print(text.replace("Python", "Java"))
print(text.split())      # 分割为列表

格式化

name = "Alice"
age = 25

# 传统格式化(%)
print("Name: %s, Age: %d" % (name, age))

# format方法
print("Name: {}, Age: {}".format(name, age))
print("Name: {0}, Age: {1}".format(name, age))
print("Name: {name}, Age: {age}".format(name=name, age=age))

# f-string(Python 3.6+)
print(f"Name: {name}, Age: {age}")
print(f"2的10次方是:{2**10}")  # 可以包含表达式

组合类型

列表(list)

列表使用方括号[],包含以逗号分隔的值。列表可以包含任何类型的对象,索引从0开始。

创建
shoplist = ['apple', 'mango', 'carrot', 'banana']
基本操作
# 访问元素
shoplist[0]     # 'apple'

# 切片(start:end:step)
shoplist[1:3]   # ['mango', 'carrot']
shoplist[:2]    # ['apple', 'mango']
shoplist[2:]    # ['carrot', 'banana']
shoplist[:]     # ['apple', 'mango', 'carrot', 'banana']

# 连接
[1, 2] + [3, 4] # [1, 2, 3, 4]

# 重复
['Hi!'] * 4# ['Hi!', 'Hi!', 'Hi!', 'Hi!']

# 获取长度
len(shoplist)   # 4

# 成员检查
'apple'in shoplist  # True

# 修改元素
shoplist[0] = 'orange'

# 删除元素
del shoplist[0]
列表推导式

语法:[expression for item in iterable if condition]

[x*2for x in range(5)]                # [0, 2, 4, 6, 8]
[x for x in range(10) if x % 2 == 0]   # [0, 2, 4, 6, 8]
[[x, x**2] for x in [2, 4, 6]]         # [[2, 4], [4, 16], [6, 36]]

元组(tuple)

元组是不可变序列,一旦创建不能修改。索引从0开始。

创建
T = (1, 2, 3, 4)
# 单元素元组必须加逗号
singleton = (50,)
基本操作
# 访问元素
T[0]     # 1

# 切片
T[1:3]   # (2, 3)
T[:2]    # (1, 2)
T[2:]    # (3, 4)
T[:]     # (1, 2, 3, 4)

# 连接
(1, 2) + (3, 4)   # (1, 2, 3, 4)

# 重复
(1, 2) * 2# (1, 2, 1, 2)

# 长度
len(T)            # 4

# 成员检查
2in T            # True

# 解包
x, y, z = (1, 2, 3)   # x=1, y=2, z=3

字典(dict)

字典是无序的可变容器,存储键值对(Key-Value)。键必须是不可变对象且唯一,值可以是任意对象。

创建
d = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

# 使用 dict() 构造函数
fdict = dict([('x', 1), ('y', 2)])   # {'x': 1, 'y': 2}

# 使用 fromkeys()
ddict = {}.fromkeys(('x', 'y'), -1)  # {'x': -1, 'y': -1}
基本操作
d = {'name': 'Zara', 'age': 7, 'class': 'First'}

# 访问
value = d['name']          # 'Zara'
value = d.get('name')      # 更安全

# 添加/修改
d["age"] = 27
# setdefault:键存在则返回值,不存在则设置默认值并返回
age = d.setdefault('age', 25)

# 合并字典
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
dict1.update(dict2)        # dict1变为 {'a': 1, 'b': 3, 'c': 4}

# 删除
del d['name']
age = d.pop('age')         # 返回被删除的值
d.clear()                  # 清空
del d                      # 删除整个字典

集合(set)

集合是无序、不重复的不可变元素集(元素必须是不可变类型)。

创建
s = {1, 2, 3}                # 包含元素的集合
s = set()                    # 空集合(注意:{}是空字典)
s = set([1, 2, 2, 3])        # 从列表创建,自动去重:{1, 2, 3}
s = set("hello")             # 从字符串创建:{'h', 'e', 'l', 'o'}
集合运算
运算
运算符
方法
说明
并集
|union()
交集
&intersection()
差集
-difference()
在第一个集合但不在第二个集合中
对称差集
^symmetric_difference()
仅存在于其中一个集合的元素(非共有)
子集测试
<=issubset()
判断是否为子集
超集测试
>=issuperset()
判断是否为超集
相等测试
==
与顺序无关
成员关系
in
也适用于其他容器
a = {1, 2, 3}
b = {2, 3, 4}

# 并集
a | b                     # {1, 2, 3, 4}
a.union(b)                # 同上

# 交集
a & b                     # {2, 3}
a.intersection(b)         # 同上

# 差集
a - b                     # {1}
a.difference(b)           # 同上

# 对称差集
a ^ b                     # {1, 4}
a.symmetric_difference(b) # 同上

# 子集/超集
c = {1, 2}
d = {1, 2, 3}
c.issubset(d)     # True
c <= d            # True
d.issuperset(c)   # True

# 相等(无序)
{1, 2} == {2, 1}  # True

# 成员关系
3in d            # True

# 注意:运算符要求两个操作数都是集合,方法可以接受任何可迭代对象
a.union([3, 4, 5])        # 允许:{1, 2, 3, 4, 5}
# a | [3, 4, 5]           # 错误:TypeError
冻结集合(frozenset)

不可变集合,创建后不能修改。

fs = frozenset([1, 2, 3])   # frozenset({1, 2, 3})

输入输出

print()函数

基本使用:

# 输出简单值
print("Hello, World!")
print(42)
print(3.14)

# 输出多个值(自动用空格分隔)
print("Name:", "Alice", "Age:", 25)  # Name: Alice Age: 25

# 指定分隔符
print("2023", "12", "04", sep="-")  # 2023-12-04

# 指定结束符
print("Hello", end=" ")  # 不换行,用空格结束
print("World")           # Hello World

格式化输出:

pi = 3.1415926535
print(f"圆周率:{pi:.2f}")    # 保留2位小数
print(f"圆周率:{pi:.4f}")    # 保留4位小数
print(f"圆周率:{pi:10.2f}")  # 宽度10,右对齐

num = 1234.5678
print(f"数字:{num:,.2f}")    # 1,234.57(千分位)
print(f"百分比:{0.25:.1%}")  # 25.0%

input()函数

获取用户输入:

# 基本输入
name = input("请输入你的名字:")
print(f"你好,{name}!")

# 数值输入(需要类型转换)
age = int(input("请输入你的年龄:"))
print(f"你明年{age + 1}岁")

# 多值输入
values = input("请输入两个数字(用空格分隔):")
a_str, b_str = values.split()
a, b = int(a_str), int(b_str)
print(f"和为:{a + b}")

注释和代码规范

注释

单行注释:

# 这是一个单行注释
x = 10# 这是行尾注释

# 多个连续的单行注释
# 用于解释复杂的代码逻辑

多行注释:

'''
这是一个多行注释
可以用三个单引号或双引号
通常用于模块或函数的文档字符串
'''


"""
这也是多行注释
功能相同,可以根据习惯选择
"""


defcalculate_sum(a, b):
"""
    计算两个数的和

    参数:
    a -- 第一个数字
    b -- 第二个数字

    返回:
    两个数字的和
    """

return a + b

PEP 8编码规范

命名规范:

# 变量名:小写字母,单词间用下划线
user_name = "Alice"
total_count = 100

# 常量名:大写字母,单词间用下划线
MAX_CONNECTIONS = 100
PI = 3.14159

# 函数名:小写字母,单词间用下划线
defcalculate_total():
pass

# 类名:驼峰命名法
classUserAccount:
pass

classDatabaseConnection:
pass

代码布局:

# 缩进:4个空格(不要用制表符)
defexample_function():
ifTrue:
        print("缩进4个空格")

# 最大行长度:79字符
# 需要换行时使用括号、方括号或花括号
long_string = ("这是一个非常长的字符串,"
"因为超过了79字符的限制,"
"所以需要分成多行。")

# 操作符周围空格
x = 10 + 5# 正确
y = a*b + c/d        # 正确:运算符优先级决定空格

# 函数参数空格
deffunc(param1, param2):
return param1 + param2

# 类内方法空行
classMyClass:
defmethod1(self):
pass

defmethod2(self):
pass

导入规范:

# 标准库导入
import sys
import os

# 第三方库导入
import numpy as np
import pandas as pd

# 本地模块导入
from my_module import my_function

# 按字母顺序排列导入
import math
import random
import sys

通过遵循这些基本语法和规范,可以编写出清晰、可读、易于维护的Python代码。

最新文章

随机文章