【基础】Python基本语法详解
发布时间: 2024-06-26 15:39:15 阅读量: 77 订阅数: 110
![【基础】Python基本语法详解](https://img-blog.csdnimg.cn/e9d78af563624e388005db9b9dd62b46.png)
# 2.1 数据类型详解
### 2.1.1 数字类型
Python中的数字类型包括整数、浮点数和复数。整数是用整数表示的,浮点数是用小数表示的,复数是用实部和虚部表示的。
```python
# 整数
number = 10
# 浮点数
number = 10.5
# 复数
number = 10 + 5j
```
# 2. Python数据类型与变量
### 2.1 数据类型详解
Python支持多种数据类型,每种数据类型都有其特定的用途和特性。
#### 2.1.1 数字类型
数字类型用于表示数值,包括整数、浮点数和复数。
* 整数:整数是无小数部分的数字,可以使用int()函数创建。例如:
```python
a = int(10) # 创建一个整数变量a,值为10
```
* 浮点数:浮点数是有小数部分的数字,可以使用float()函数创建。例如:
```python
b = float(3.14) # 创建一个浮点数变量b,值为3.14
```
* 复数:复数是具有实部和虚部的数字,可以使用complex()函数创建。例如:
```python
c = complex(2, 3) # 创建一个复数变量c,实部为2,虚部为3
```
#### 2.1.2 字符串类型
字符串类型用于表示文本数据,可以使用str()函数创建。例如:
```python
s = str("Hello World") # 创建一个字符串变量s,值为"Hello World"
```
字符串支持各种操作,如连接、切片和格式化。
#### 2.1.3 布尔类型
布尔类型表示真或假,可以使用bool()函数创建。例如:
```python
t = bool(True) # 创建一个布尔变量t,值为True
```
布尔类型主要用于条件语句中。
#### 2.1.4 列表类型
列表类型用于存储有序的元素集合,可以使用[]创建。例如:
```python
l = [1, 2, 3, 4, 5] # 创建一个列表变量l,包含元素1、2、3、4、5
```
列表支持各种操作,如添加、删除、插入和排序。
#### 2.1.5 元组类型
元组类型用于存储不可变的有序元素集合,可以使用()创建。例如:
```python
t = (1, 2, 3, 4, 5) # 创建一个元组变量t,包含元素1、2、3、4、5
```
元组与列表类似,但不能被修改。
#### 2.1.6 字典类型
字典类型用于存储键值对,可以使用{}创建。例如:
```python
d = {"name": "John", "age": 30, "city": "New York"} # 创建一个字典变量d,包含键值对
```
字典支持各种操作,如添加、删除、查找和更新。
#### 2.1.7 集合类型
集合类型用于存储无序的唯一元素集合,可以使用set()创建。例如:
```python
s = set([1, 2, 3, 4, 5]) # 创建一个集合变量s,包含元素1、2、3、4、5
```
集合支持各种操作,如添加、删除、交集和并集。
### 2.2 变量的定义与使用
#### 2.2.1 变量的命名规则
Python变量的命名规则如下:
* 变量名必须以字母或下划线开头
* 变量名只能包含字母、数字和下划线
* 变量名不能是Python关键字
* 变量名应简短、描述性,并符合驼峰命名法或下划线命名法
#### 2.2.2 变量的赋值与类型转换
变量的赋值使用等号(=)运算符。例如:
```python
a = 10 # 将整数10赋值给变量a
```
变量的类型转换可以使用内置函数,如int()、float()和str()。例如:
```python
b = str(a) # 将变量a转换为字符串并赋值给变量b
```
# 3.1 条件语句
条件语句是用于控制程序执行流程的语句,它根据指定的条件来决定是否执行某段代码。Python 中常用的条件语句有 `if-elif-else` 语句和嵌套条件语句。
#### 3.1.1 if-elif-else 语句
`if-elif-else` 语句用于根据多个条件来执行不同的代码块。其语法如下:
```python
if condition1:
# 如果 condition1 为真,执行此代码块
elif condition2:
# 如果 condition1 为假,且 condition2 为真,执行此代码块
else:
# 如果 condition1 和 condition2 都为假,执行此代码块
```
例如,以下代码根据输入的数字判断其奇偶性:
```python
num = int(input("请输入一个数字:"))
if num % 2 == 0:
print(f"{num} 是偶数")
elif num % 2 == 1:
print(f"{num} 是奇数")
else:
print("输入无效")
```
#### 3.1.2 嵌套条件语句
嵌套条件语句是将一个条件语句嵌套在另一个条件语句中。其语法如下:
```python
if condition1:
if condition2:
# 如果 condition1 和 condition2 都为真,执行此代码块
else:
# 如果 condition1 为真,但 condition2 为假,执行此代码块
else:
# 如果 condition1 为假,执行此代码块
```
例如,以下代码根据输入的数字判断其奇偶性和大小:
```python
num = int(input("请输入一个数字:"))
if num % 2 == 0:
print(f"{num} 是偶数")
if num > 0:
print(f"{num} 是正偶数")
else:
print(f"{num} 是负偶数")
else:
print(f"{num} 是奇数")
if num > 0:
print(f"{num} 是正奇数")
else:
print(f"{num} 是负奇数")
```
# 4. Python实践应用
### 4.1 文件操作
#### 4.1.1 文件的读写操作
Python提供了丰富的文件操作函数,可以方便地对文件进行读写操作。
**文件打开**
```python
with open('filename.txt', 'mode') as f:
# 文件操作代码
```
* `filename.txt` 为要打开的文件名
* `mode` 为打开模式,常见模式有:
* `r`:只读模式
* `w`:只写模式,若文件不存在则创建,若存在则清空
* `a`:追加模式,若文件不存在则创建,若存在则在文件末尾追加
* `r+`:读写模式,文件必须存在
* `w+`:读写模式,若文件不存在则创建,若存在则清空
* `a+`:读写模式,若文件不存在则创建,若存在则在文件末尾追加
**文件读取**
```python
with open('filename.txt', 'r') as f:
content = f.read()
```
* `f.read()` 读取文件所有内容,返回字符串
**文件写入**
```python
with open('filename.txt', 'w') as f:
f.write('Hello, world!')
```
* `f.write()` 向文件写入内容,参数为字符串
**文件追加**
```python
with open('filename.txt', 'a') as f:
f.write('Hello, world!')
```
* `f.write()` 向文件追加内容,参数为字符串
#### 4.1.2 文件的创建与删除
**文件创建**
```python
with open('new_file.txt', 'w') as f:
pass
```
* `open()` 函数以写模式打开文件,若文件不存在则创建
**文件删除**
```python
import os
os.remove('filename.txt')
```
* `os.remove()` 函数删除指定文件
#### 4.1.3 文件的属性与权限
**文件属性**
```python
import os
file_stats = os.stat('filename.txt')
print(file_stats)
```
* `os.stat()` 函数返回文件属性信息,包括文件大小、创建时间、修改时间等
**文件权限**
```python
import os
os.chmod('filename.txt', 0o644)
```
* `os.chmod()` 函数修改文件权限,参数为文件路径和权限值
* 权限值由三位数字组成,分别表示文件所有者、用户组和其他用户的权限
* 每位数字表示权限类型,0表示无权限,1表示可执行权限,2表示可写权限,4表示可读权限
* 例如,`0o644` 表示文件所有者具有读写权限,用户组具有读权限,其他用户具有读权限
### 4.2 网络编程
#### 4.2.1 Socket编程基础
Socket是网络编程的基本单位,它提供了一种应用程序与网络进行通信的机制。
**创建Socket**
```python
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
```
* `socket.socket()` 函数创建Socket对象
* `socket.AF_INET` 表示IPv4地址族
* `socket.SOCK_STREAM` 表示TCP协议
**绑定Socket**
```python
sock.bind(('127.0.0.1', 8080))
```
* `sock.bind()` 函数将Socket绑定到指定地址和端口
* `'127.0.0.1'` 为本地环回地址
* `8080` 为端口号
**监听Socket**
```python
sock.listen(5)
```
* `sock.listen()` 函数将Socket设置为监听状态,参数为最大连接数
**接受连接**
```python
conn, addr = sock.accept()
```
* `sock.accept()` 函数接受客户端连接,返回连接对象和客户端地址
#### 4.2.2 HTTP请求与响应
HTTP(超文本传输协议)是用于在Web浏览器和Web服务器之间传输数据的协议。
**HTTP请求**
```python
request = 'GET /index.html HTTP/1.1\r\nHost: example.com\r\n\r\n'
```
* HTTP请求由请求行、请求头和空行组成
* 请求行包含请求方法、请求路径和HTTP版本
* 请求头包含有关请求的附加信息,如主机名
**HTTP响应**
```python
response = 'HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<html><body>Hello, world!</body></html>'
```
* HTTP响应由状态行、响应头和空行组成
* 状态行包含HTTP版本、状态码和状态消息
* 响应头包含有关响应的附加信息,如内容类型
#### 4.2.3 Web服务器搭建
```python
import socket
import http.server
# 创建Socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定Socket
sock.bind(('127.0.0.1', 8080))
# 监听Socket
sock.listen(5)
# 创建HTTP服务器
server = http.server.HTTPServer(sock, http.server.SimpleHTTPRequestHandler)
# 运行服务器
server.serve_forever()
```
* 服务器在本地环回地址`127.0.0.1`的`8080`端口监听HTTP连接
* 当客户端连接到服务器时,`HTTPServer`将创建一个`SimpleHTTPRequestHandler`对象来处理请求
* `SimpleHTTPRequestHandler`提供了基本的文件系统操作,如文件读取和写入
### 4.3 数据处理
#### 4.3.1 数据结构的应用
Python提供了丰富的内置数据结构,如列表、元组、字典和集合。
**列表**
```python
my_list = [1, 2, 3, 4, 5]
```
* 列表是可变的有序序列,可以存储不同类型的数据
**元组**
```python
my_tuple = (1, 2, 3, 4, 5)
```
* 元组是不可变的有序序列,可以存储不同类型的数据
**字典**
```python
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
```
* 字典是一种无序的键值对集合,键必须是唯一的
**集合**
```python
my_set = {1, 2, 3, 4, 5}
```
* 集合是一种无序的不重复元素集合
#### 4.3.2 数据分析与可视化
**数据分析**
```python
import pandas as pd
df = pd.read_csv('data.csv')
df['age'].mean()
```
* `pandas`库提供了强大的数据分析功能
* `df.read_csv()`函数从CSV文件读取数据
* `df['age'].mean()`函数计算年龄列的平均值
**数据可视化**
```python
import matplotlib.pyplot as plt
plt.scatter(df['age'], df['salary'])
plt.show()
```
* `matplotlib`库提供了丰富的可视化功能
* `plt.scatter()`函数绘制散点图,显示年龄和工资之间的关系
* `plt.show()`函数显示图形
# 5.1 面向对象编程
面向对象编程(OOP)是一种编程范式,它以对象为中心。对象是数据和行为的集合,它封装了数据并提供访问数据的方法。OOP 的主要好处是它提高了代码的可重用性、可维护性和可扩展性。
### 5.1.1 类与对象
类是对象的蓝图,它定义了对象的数据和行为。对象是类的实例,它包含了类的所有数据和行为。
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def get_name(self):
return self.name
def get_age(self):
return self.age
```
在这个例子中,`Person` 类定义了一个具有 `name` 和 `age` 属性的对象。`__init__` 方法是构造函数,它在创建对象时被调用。`get_name` 和 `get_age` 方法是访问器方法,它们允许我们获取对象的属性。
### 5.1.2 继承与多态
继承允许一个类从另一个类继承数据和行为。派生类可以覆盖基类的方法,以提供不同的实现。多态允许我们使用相同的接口来调用不同类型对象的相同方法。
```python
class Employee(Person):
def __init__(self, name, age, salary):
super().__init__(name, age)
self.salary = salary
def get_salary(self):
return self.salary
```
在这个例子中,`Employee` 类从 `Person` 类继承。`Employee` 类覆盖了 `get_name` 和 `get_age` 方法,以提供自己的实现。`get_salary` 方法是 `Employee` 类特有的。
### 5.1.3 模块与包
模块是 Python 代码的集合,它可以被其他 Python 代码导入和使用。包是模块的集合,它可以被其他 Python 代码导入和使用。
```python
import my_module
my_module.my_function()
```
在这个例子中,`my_module` 是一个模块,它包含 `my_function` 函数。我们使用 `import` 语句导入模块,然后使用模块名调用函数。
0
0