Python 基本语法
1. Python 的缩进规则
Python 使用 缩进(空格)来标识代码块,不像其他语言使用 {}
或 begin...end
这样的符号。
- 一般建议使用 4个空格 作为缩进(符合 PEP8 规范)。
- 缩进必须保持一致,否则会报错。
示例:
正确缩进
if True:
print("缩进正确")
print("缩进正确")
错误的缩进(会抛出 IndentationError)
if True:
print("缩进不一致") #
print("缩进不一致") # 缩进不一致会出错.
2. 注释
- 单行注释 使用
#
开头。 - 多行注释 通常使用 三个引号(
'''
或"""
)包裹。
示例:
# 这是一个单行注释
'''
这是一个
多行注释
'''
"""
这也是一个
多行注释
"""
3. 变量命名规则
- 区分大小写:
name
和Name
是两个不同的变量。 - 不能使用 Python 关键字 作为变量名,如
if
、for
、class
等。 - 变量名可以由 字母、数字和下划线 组成,但不能以数字开头。
示例:
name = "Alice" # 正确
age = 25 # 正确
#下面是错误的
2name = "Bob" # 错误,变量名不能以数字开头
4. 基本数据类型与赋值
Python 是 动态类型语言,变量无需声明类型,解释器会自动判断。
name = "Alice" # 字符串
age = 25 # 整数
height = 1.75 # 浮点数
is_student = True # 布尔值
多重赋值:
x, y, z = 1, 2, 3
print(x, y, z) # 输出: 1 2 3
a = b = c = 10 # 多个变量赋相同值
print(a, b, c) # 输出: 10 10 10
5. 输入与输出
- 使用
input()
接收用户输入,输入的内容为 字符串。 - 使用
print()
输出到控制台。
name = input("请输入你的名字: ")
print("你好, " + name + "!")
6. 条件语句
条件语句使用 if
、elif
、else
。
age = 18
if age < 18:
print("未成年")
elif age == 18:
print("刚成年")
else:
print("成年")
7. 循环
for 循环:
遍历 可迭代对象(如列表、字符串、范围)。
for i in range(5):
print(i) # 输出: 0 1 2 3 4
for i in range(5, 7):
print(i) # 输出: 5,6
while 循环:
只要条件为 True
,循环会持续执行。
count = 0
while count < 5:
print(count)
count += 1
8. 常见运算符
类型 | 运算符 | 示例 |
---|---|---|
算术运算符 | + - * / // % ** | 5 + 3 输出: 8 |
比较运算符 | == != > < >= <= | 5 > 3 输出: True |
逻辑运算符 | and or not | True and False 输出: False |
赋值运算符 | = += -= *= /= | x += 1 等价于 x = x + 1 |
成员运算符 | in not in | "a" in "abc" 输出: True |
算数运算符举例:
符号 | 描述 | 例子 |
---|---|---|
+ | 加法 | a = 5 + 3 |
- | 减法 | a = 5 - 3 |
* | 乘法 | a = 6 * 4 |
/ | 除法 | a = 7 / 2 (等于 3.5) |
// | 整除, 向下取整 | a = 9 // 2 (等于4) ; b = -9 // 2 (等于-5) |
% | 取余(模)运算 | b = 10 % 3 (余数 1) |
** | 指数运算 | a = 2 ** 3 (2的3次方) |
9. 异常处理
使用 try-except
捕获运行时错误。
try:
num = int(input("输入一个数字: "))
print(f"你输入的数字是 {num}")
except ValueError:
print("输入的不是数字!")
10. 函数定义
使用 def
关键字定义函数。
def greet(name):
print(f"Hello, {name}!")
greet("张三") # 输出: Hello, 张三!
使用 *args 和 **kwargs 处理可变数量的参数。
*args 接收位置参数的元组。
**kwargs 接收关键字参数的字典.
def abcdef(*args, **kwargs):
print("元组参数:", args)
print("健值参数:", kwargs)
abcdef(1, 2, 3, name="张三", age=30)
# 输出如下
# 元组参数: (1, 2, 3)
# 健值参数: {'name': '张三', 'age': 30}
默认值参数
为某些参数设置默认值。
def multiply(a, b=2):
return a * b
print(multiply(5)) # 输出:10
print(multiply(5, 3)) # 输出:15
文档字符串 (Docstring)
可以使用文档字符串为函数提供说明,通常放在函数定义的第一行。
def add(a,b):
"""
加法函数.
调用: y = add(1,3)
结果: y 值等于 4.
"""
return a + b
可以使用 help() 函数查看文档字符串。
help(add) # 通过 help函数查看 """ 说明 """
'''
输出结果如下:
add(a, b)
加法函数.
调用: y = add(1,3)
结果: y 值等于 4.
'''
11. 模块与导入
查看更多细节: Python 模块与包基础与实例 <---点击
使用 import
导入模块。
import math
import random
print(math.sqrt(16)) # 输出: 4.0
print(random.randint(1, 10)) # 随机生成1到10之间的整数
print(random.choice(['张三', '李四', '王五'])) # 随机选择一个元素
其他常用的模块
模块名 | 导入入方式 | 说明 |
---|---|---|
datetime | from datetime import datetime | 用于处理日期和时间的相关操作 |
os | import os | 用于与操作系统交互,比如文件路径操作、环境变量、创建或删除文件夹。 |
sys | import sys | 用于访问Python解释器的相关信息和系统参数。 |
re | import re | 用于正则表达式匹配,处理字符串的高级搜索和替换。 |
json | import json | 用于处理JSON格式的数据。 |
requests | import requests | 用于发送HTTP请求(需要通过pip install requests安装)。 |
datetime 用于处理日期和时间的相关操作
from datetime import datetime
now = datetime.now()
print(now) # 当前时间
print(now.strftime('%Y-%m-%d %H:%M:%S')) # 格式化时间为字符串
os 用于与操作系统交互,比如文件路径操作、环境变量、创建或删除文件夹。
import os
print(os.name) # 获取操作系统名称
print(os.getcwd()) # 获取当前工作目录
# os.mkdir('test_folder') # 创建文件夹
# os.rmdir('test_folder') # 删除文件夹
# os.remove('xx.txt') # 删除文件
print(os.path.exists('test_folder')) # 文件是否存在
sys 用于访问Python解释器的相关信息和系统参数。
import sys
print(sys.version) # 输出Python版本信息
print(sys.argv) # 命令行参数
sys.exit(0) # 退出程序
json 模块
import json
data = {'name': '张三', 'age': 1024}
json_str = json.dumps(data) # 转换为JSON字符串
print(json_str) # '{'name': '张三', 'age': 1024}'
data_dict = json.loads(json_str) # 解析JSON字符串为字典
print(data_dict) # {'name': '张三', 'age': 1024}
requests 用于发送HTTP请求
(需要通过pip install requests安装)。
pip install requests 或 pip3 install requests
import requests
response = requests.get('https://api.github.com')
print(response.status_code) # 响应状态码
print(response.json()) # 解析JSON响应
# print(response.text) # 文本格式
12. 类与对象(简单介绍)
查看更多细节: Python 面向对象编程(OOP)基础 <--点这里
Python 支持 面向对象编程。
class Example:
def __init__(self, a, b):
self.a = a;
self.b = b;
def add(self):
return self.a + self.b;
p = Example(10,20);
print(p.add()) # 输出 30
类基本定义
class ClassName:
# 类属性, 通过类本身进行修改与访问. 可以通过实例读取.
class_attribute = 'value'
# 构造方法
def __init__(self, parameter1, parameter2):
# 实例属性
self.attribute1 = parameter1
self.attribute2 = parameter2
self.__private_attribute = "xxx" # 私有属性.
# 类方法
def method_name(self):
# 方法体
pass
# 静态方法, 直接调用: ClassName.static_method_name()
@staticmethod
def static_method():
return "静态方法"
# 类方法, 参数第一个为类的本身. 类方法可以类调用, 也可以实例调用.
@classmethod
def class_method(cls):
cls.class_attribute = "hello world"
类方法与实例方法的区别
特性 | 类方法 | 实例方法 |
---|---|---|
绑定对象 | 绑定到类 | 绑定到实例 |
第一个参数 | cls (类本身) | self (实例本身) |
访问权限 | 可以访问类属性 | 可以访问实例属性 |
调用方式 | 可以通过类名或实例调用 | 只能通过实例调用 |
类属性和实例属性之间的区别.
特性 | 类属性 | 实例属性 |
---|---|---|
定义位置 | 类体内部(方法外部) | 在构造方法 __init__ 内部 |
作用域 | 与类关联,所有实例共享 | 与特定实例关联,每个实例独立 |
访问方式 | 通过类名或实例访问 | 通过实例访问 |
共享性 | 所有实例共享同一值 | 每个实例有自己的值 |
适用场景 | 用于需要在多个实例之间共享的常量或状态 | 用于需要跟踪特定实例的状态 |
修改影响 | 修改类属性会影响所有实例 | 修改实例属性只影响特定实例 |
建议使用 | 当需要定义常量或类级别的状态时使用 | 当需要为每个实例存储独立状态时使用 |
13. Python 常见内置函数
函数 | 描述 | 示例代码 |
---|---|---|
print() | 打印输出到控制台 | print("Hello, World!") |
len() | 返回对象(字符串、列表等)的长度 | len("Hello") # 输出: 5 |
type() | 返回对象的类型 | type(5) # 输出: <class ‘int’> |
str() | 将对象转换为字符串 | str(100) # 输出: ‘100’ |
int() | 将对象转换为整数 | int("10") # 输出: 10 |
float() | 将对象转换为浮点数 | float("3.14") # 输出: 3.14 |
list() | 将可迭代对象转换为列表 | list("abc") # 输出: [‘a’, ‘b’, ‘c’] |
dict() | 创建字典对象 | dict(a=1, b=2) # 输出: {‘a’: 1, ‘b’: 2} |
set() | 创建集合对象 | set([1, 2, 2, 3]) # 输出: {1, 2, 3} |
sum() | 返回可迭代对象的总和 | sum([1, 2, 3]) # 输出: 6 |
max() | 返回可迭代对象中的最大值 | max([1, 2, 3]) # 输出: 3 |
min() | 返回可迭代对象中的最小值 | min([1, 2, 3]) # 输出: 1 |
sorted() | 返回排序后的列表 | sorted([3, 1, 2]) # 输出: [1, 2, 3] |
range() | 生成一个整数序列 | list(range(5)) # 输出: [0, 1, 2, 3, 4] |
enumerate() | 返回可迭代对象的索引和元素 | list(enumerate(["a", "b", "c"])) # 输出: [(0, ‘a’), (1, ‘b’), (2, ‘c’)] |
map() | 对可迭代对象中的每个元素应用函数 | list(map(str, [1, 2, 3])) # 输出: [‘1’, ‘2’, ‘3’] |
filter() | 过滤可迭代对象中的元素 | list(filter(lambda x: x > 1, [1, 2, 3])) # 输出: [2, 3] |
zip() | 将多个可迭代对象打包成一个元组列表 | list(zip([1, 2, 3], ['a', 'b', 'c'])) # 输出: [(1, ‘a’), (2, ‘b’), (3, ‘c’)] |
any() | 如果可迭代对象中至少有一个元素为真 | any([False, True, False]) # 输出: True |
all() | 如果可迭代对象中的所有元素为真 | all([True, True, True]) # 输出: True |
14. Python 的代码规范(PEP 8)
- 缩进:使用 4 个空格。
- 变量命名:使用 下划线命名法(如:
user_name
)。 - 每行最多 79 个字符。
- 文件末尾留一行空行。
15. 示例代码:猜数字游戏
import random
number = random.randint(1, 100) # 生成 1 到 100 之间的随机数
guess = None
while guess != number:
guess = int(input("猜猜数字是多少: "))
if guess < number:
print("太小了!")
elif guess > number:
print("太大了!")
else:
print("恭喜你,猜对了!")
总结
基础常见的使用方式总结与记录.
更多教程:
Python 面向对象编程(OOP)基础
Python 数据结构:列表、元组、字典和集合
Python入 分支和循环操作入门教程
Python 异常处理:try-except
、else
、finally
与自定义异常
Python 字符串操作基础应用
Python 模块与包基础与实例
Python 文件操作基础
Python 多线程开发基础
Python Lambda 表达式简介
Python 使用 Flask 开发 HTTP 服务器与 API
Python与MySQL数据库操作教程