【基础】初识Python:基本语法与编程环境
发布时间: 2024-06-27 03:55:56 阅读量: 4 订阅数: 20
![【基础】初识Python:基本语法与编程环境](https://img-blog.csdnimg.cn/e9d78af563624e388005db9b9dd62b46.png)
# 2.1 Python变量和数据类型
### 2.1.1 变量定义和赋值
在Python中,变量用于存储数据。变量的定义使用`=`赋值号,变量名遵循Python标识符命名规则。
```python
# 定义变量并赋值
name = "John Doe"
age = 30
```
变量名可以包含字母、数字和下划线,但不能以数字开头。变量名对大小写敏感。
### 2.1.2 常用数据类型和转换方式
Python支持多种数据类型,包括:
* **整数 (int)**:整数,如 10, -20
* **浮点数 (float)**:浮点数,如 3.14, -5.2
* **字符串 (str)**:字符串,如 "Hello World", 'Python'
* **布尔值 (bool)**:布尔值,如 True, False
* **列表 (list)**:有序的元素集合,如 [1, 2, 3, "a"]
* **元组 (tuple)**:不可变的有序元素集合,如 (1, 2, 3, "a")
* **字典 (dict)**:键值对集合,如 {"name": "John Doe", "age": 30}
数据类型转换可以通过内置函数实现,如`int()`、`float()`、`str()`。
# 2. Python编程技巧
### 2.1 Python变量和数据类型
#### 2.1.1 变量定义和赋值
Python中变量定义使用`=`赋值运算符,变量名可以包含字母、数字和下划线,但不能以数字开头。变量赋值后,变量名将指向该值在内存中的地址。
```python
# 定义变量并赋值
name = "John Doe"
age = 30
```
#### 2.1.2 常用数据类型和转换方式
Python支持多种数据类型,包括:
| 数据类型 | 描述 | 转换方式 |
|---|---|---|
| 整数 | 整数 | `int()` |
| 浮点数 | 小数 | `float()` |
| 字符串 | 文本 | `str()` |
| 布尔值 | True或False | `bool()` |
| 列表 | 有序集合 | `list()` |
| 元组 | 不可变有序集合 | `tuple()` |
| 字典 | 键值对集合 | `dict()` |
数据类型转换可以通过相应的内置函数实现。例如:
```python
# 将字符串转换为整数
number = int("123")
# 将整数转换为浮点数
pi = float(3.14)
```
### 2.2 Python流程控制
#### 2.2.1 条件语句
Python使用`if`、`elif`和`else`语句进行条件判断。
```python
# 检查是否大于18岁
if age > 18:
print("成年人")
elif age >= 13:
print("青少年")
else:
print("儿童")
```
#### 2.2.2 循环语句
Python支持`for`和`while`循环语句。
```python
# 遍历列表
for item in [1, 2, 3]:
print(item)
# 执行循环直到满足条件
while age < 18:
age += 1
```
#### 2.2.3 函数和参数传递
Python函数可以接受参数并返回值。参数传递方式有:
* **按位置传递:**函数调用时,参数的顺序与函数定义时的参数顺序一致。
* **按关键字传递:**函数调用时,参数名称与函数定义时的参数名称一致。
```python
# 定义函数并按位置传递参数
def sum(a, b):
return a + b
# 按关键字传递参数
sum(b=2, a=1)
```
### 2.3 Python调试和优化
#### 2.3.1 常见问题及解决方式
Python调试常见问题包括:
* **语法错误:**代码中存在语法错误,无法编译。
* **运行时错误:**代码执行时出现错误,例如除零错误。
* **逻辑错误:**代码逻辑不正确,导致错误的结果。
解决方法包括:
* **使用调试器:**使用`pdb`调试器逐行执行代码,检查变量值和错误信息。
* **打印输出:**在代码中添加`print()`语句,输出中间结果,帮助定位错误。
* **使用断言:**使用`assert`语句检查条件,如果条件不满足,则引发错误。
#### 2.3.2 性能优化方法
优化Python代码性能的方法包括:
* **使用适当的数据结构:**选择适合任务的数据结构,例如使用列表而不是元组进行可变集合。
* **避免不必要的复制:**尽量避免创建不必要的变量或对象副本。
* **使用缓存:**将经常使用的结果存储在缓存中,避免重复计算。
* **使用并行处理:**利用多核CPU并行执行任务。
# 3. Python实践应用
### 3.1 Python文件操作
#### 3.1.1 文件的读写操作
**文件读写操作**
Python提供了丰富的文件操作函数,可以方便地对文件进行读写操作。
**打开文件**
```python
f = open("test.txt", "w") # 以写入模式打开文件
f = open("test.txt", "r") # 以读取模式打开文件
```
**参数说明:**
* filename:要打开的文件名
* mode:打开模式,可以是 "r"(读取)、"w"(写入)、"a"(追加)等
**读写文件**
```python
f.write("Hello world!") # 写入文件
data = f.read() # 读取文件
```
**参数说明:**
* data:要写入或读取的数据
**关闭文件**
```python
f.close() # 关闭文件
```
#### 3.1.2 文件的权限和属性
**文件权限**
Python提供了os模块来操作文件的权限。
```python
import os
os.chmod("test.txt", 0o755) # 设置文件权限为 755
```
**参数说明:**
* filename:要设置权限的文件名
* mode:权限模式,以八进制表示
**文件属性**
Python提供了stat模块来获取文件的属性。
```python
import stat
st = os.stat("test.txt")
print(st.st_size) # 获取文件大小
print(st.st_mtime) # 获取文件修改时间
```
**参数说明:**
* filename:要获取属性的文件名
* st:文件属性对象
### 3.2 Python网络编程
#### 3.2.1 常用的网络编程命令和函数
Python提供了socket模块进行网络编程。
**创建套接字**
```python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建一个 TCP 套接字
```
**参数说明:**
* family:套接字类型,一般为 socket.AF_INET(IPv4)或 socket.AF_INET6(IPv6)
* type:套接字协议,一般为 socket.SOCK_STREAM(TCP)或 socket.SOCK_DGRAM(UDP)
**绑定套接字**
```python
s.bind(("127.0.0.1", 8000)) # 将套接字绑定到指定的 IP 地址和端口
```
**参数说明:**
* addr:要绑定的地址和端口,元组形式
**监听套接字**
```python
s.listen(5) # 开始监听套接字,最多允许 5 个连接排队
```
**参数说明:**
* backlog:允许排队的最大连接数
#### 3.2.2 Socket编程实例
**服务器端**
```python
import socket
# 创建套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定套接字
s.bind(("127.0.0.1", 8000))
# 监听套接字
s.listen(5)
# 接受连接
conn, addr = s.accept()
# 接收数据
data = conn.recv(1024)
# 发送数据
conn.send(b"Hello world!")
# 关闭连接
conn.close()
```
**客户端**
```python
import socket
# 创建套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器
s.connect(("127.0.0.1", 8000))
# 发送数据
s.send(b"Hello server!")
# 接收数据
data = s.recv(1024)
# 关闭连接
s.close()
```
### 3.3 Python系统管理
#### 3.3.1 系统信息的获取和监控
**获取系统信息**
Python提供了platform模块获取系统信息。
```python
import platform
print(platform.system()) # 获取系统类型
print(platform.release()) # 获取系统版本
print(platform.machine()) # 获取机器类型
```
**参数说明:**
* 无
**监控系统资源**
Python提供了psutil模块监控系统资源。
```python
import psutil
print(psutil.cpu_percent()) # 获取 CPU 使用率
print(psutil.virtual_memory().percent) # 获取内存使用率
print(psutil.disk_usage("/").percent) # 获取磁盘使用率
```
**参数说明:**
* path:要获取使用率的磁盘路径
#### 3.3.2 进程管理和资源限制
**进程管理**
Python提供了multiprocessing模块进行进程管理。
```python
import multiprocessing
# 创建进程
p = multiprocessing.Process(target=func, args=(args,))
# 启动进程
p.start()
# 等待进程结束
p.join()
```
**参数说明:**
* target:要执行的函数
* args:要传递给函数的参数
**资源限制**
Python提供了resource模块设置进程的资源限制。
```python
import resource
# 设置最大内存使用量
resource.setrlimit(resource.RLIMIT_AS, (1024 * 1024 * 1024, 1024 * 1024 * 1024))
# 设置最大 CPU 时间
resource.setrlimit(resource.RLIMIT_CPU, (10, 10))
```
**参数说明:**
* resource:资源类型,如 resource.RLIMIT_AS(内存)或 resource.RLIMIT_CPU(CPU 时间)
* limits:资源限制,元组形式,第一个元素为软限制,第二个元素为硬限制
# 4. Python进阶应用
### 4.1 Python正则表达式
#### 4.1.1 正则表达式的基本语法和元字符
正则表达式是一种强大的文本匹配工具,它使用模式来匹配字符串中的特定模式。Python中使用`re`模块来处理正则表达式。
基本语法:
```python
import re
pattern = r"模式"
match = re.search(pattern, string)
```
元字符:
| 元字符 | 描述 |
|---|---|
| `.` | 匹配任何单个字符 |
| `*` | 匹配前面的字符零次或多次 |
| `+` | 匹配前面的字符一次或多次 |
| `?` | 匹配前面的字符零次或一次 |
| `^` | 匹配字符串的开头 |
| `$` | 匹配字符串的结尾 |
| `[]` | 匹配方括号内的任何一个字符 |
| `()` | 分组 |
#### 4.1.2 正则表达式的进阶应用
正则表达式的高级应用包括:
* **贪婪匹配和非贪婪匹配:**`*`、`+`、`?`默认使用贪婪匹配,即尽可能多地匹配字符。使用`*?`、`+?`、`??`可以进行非贪婪匹配。
* **分组和反向引用:**使用`()`分组可以捕获匹配的子字符串,并使用`\n`(其中n为组号)进行反向引用。
* **条件模式:**使用`|`可以匹配多个模式中的任何一个。
* **替换和分割:**`re.sub`函数可以替换匹配的子字符串,`re.split`函数可以根据模式分割字符串。
### 4.2 Python数据库编程
#### 4.2.1 数据库的连接和操作
Python可以使用`pymysql`或`psycopg2`等库连接和操作数据库。
连接数据库:
```python
import pymysql
db = pymysql.connect(host="localhost", user="root", password="password", database="database_name")
```
执行SQL语句:
```python
cursor = db.cursor()
cursor.execute("SELECT * FROM table_name")
results = cursor.fetchall()
```
#### 4.2.2 SQL语句的执行和结果处理
SQL语句包括:
* **SELECT:**查询数据
* **INSERT:**插入数据
* **UPDATE:**更新数据
* **DELETE:**删除数据
结果处理:
* `cursor.fetchall():`获取所有查询结果
* `cursor.fetchone():`获取第一行查询结果
* `cursor.rowcount:`获取受影响的行数
### 4.3 Python GUI编程
#### 4.3.1 常见的GUI工具和库
Python GUI编程可以使用`Tkinter`或`PyQt`等库。
* **Tkinter:**Python标准库中的GUI工具,简单易用。
* **PyQt:**跨平台GUI库,功能强大,但需要单独安装。
#### 4.3.2 实现图形化界面的示例
使用Tkinter实现一个简单的GUI界面:
```python
import tkinter as tk
root = tk.Tk()
root.title("Python GUI")
label = tk.Label(root, text="Hello World!")
label.pack()
root.mainloop()
```
此代码创建一个带有"Hello World!"标签的窗口。
# 5. Python进阶应用
### 5.1 Python正则表达式
#### 5.1.1 正则表达式的基本语法和元字符
正则表达式是一种用于匹配字符串模式的强大工具。它使用一系列特殊字符和元字符来定义匹配规则。以下是一些常用的元字符:
- `.`:匹配任何单个字符。
- `*`:匹配前面的字符零次或多次。
- `+`:匹配前面的字符一次或多次。
- `?`:匹配前面的字符零次或一次。
- `^`:匹配字符串的开头。
- `$`:匹配字符串的结尾。
- `[]`:匹配方括号内的任何一个字符。
- `()`:将表达式分组。
例如,正则表达式 `^[a-zA-Z0-9_]+$` 匹配由字母、数字或下划线组成的字符串,且必须以字母开头和结尾。
#### 5.1.2 正则表达式的应用
正则表达式在各种应用中都有广泛的应用,包括:
- 文本搜索和替换
- 数据验证
- 数据提取
- 字符串处理
例如,我们可以使用正则表达式从日志文件中提取 IP 地址:
```python
import re
pattern = r"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b"
with open("logfile.txt", "r") as f:
for line in f:
match = re.search(pattern, line)
if match:
print(match.group())
```
### 5.2 Python数据库编程
#### 5.2.1 数据库的连接和操作
Python 提供了多种库来连接和操作数据库,其中最常用的库是 `sqlite3` 和 `psycopg2`。
使用 `sqlite3` 连接到 SQLite 数据库:
```python
import sqlite3
conn = sqlite3.connect("mydb.db")
c = conn.cursor()
```
使用 `psycopg2` 连接到 PostgreSQL 数据库:
```python
import psycopg2
conn = psycopg2.connect(
host="localhost",
port=5432,
database="mydb",
user="postgres",
password="mypassword",
)
c = conn.cursor()
```
#### 5.2.2 SQL语句的执行和结果处理
连接到数据库后,我们可以使用 `execute()` 方法执行 SQL 语句:
```python
c.execute("SELECT * FROM users")
```
执行查询后,我们可以使用 `fetchall()` 方法获取所有结果行:
```python
results = c.fetchall()
```
结果行存储在一个元组列表中,每个元组代表一行数据。我们可以通过索引访问元组中的列值:
```python
for row in results:
print(row[0], row[1], row[2])
```
0
0