Python 是一种高级、解释型、通用的编程语言,以其简洁、易读、易维护的代码风格和强大的功能而受到广泛欢迎。它拥有丰富的库和框架,可应用于多个领域,如 Web 开发、数据科学、人工智能、自动化脚本、游戏开发等。本汇总将全面介绍 Python 的基础知识、高级特性以及常用的库和框架,帮助读者全面掌握 Python 编程。
# 这是一个单行注释
'''
这是一个
多行注释
'''
"""
这也是一个
多行注释
"""
my_variable = 10
。10
、-5
。3.14
、-2.5
。'Hello, World!'
、"Python is great"
。True
和False
。+
(加)、-
(减)、*
(乘)、/
(除)、%
(取模)、**
(幂运算)、//
(整除)。例如:result = 5 + 3 # 加法,结果为8
result = 10 / 3 # 除法,结果为3.3333333333333335
result = 10 % 3 # 取模,结果为1
result = 2 ** 3 # 幂运算,结果为8
result = 10 // 3 # 整除,结果为3
==
(等于)、!=
(不等于)、>
(大于)、<
(小于)、>=
(大于等于)、<=
(小于等于)。例如:is_equal = 5 == 3 # 比较是否相等,结果为False
is_greater = 5 > 3 # 比较大小,结果为True
and
(与)、or
(或)、not
(非)。例如:result = (5 > 3) and (2 < 4) # 逻辑与,结果为True
result = (5 > 3) or (2 > 4) # 逻辑或,结果为True
result = not (5 > 3) # 逻辑非,结果为False
=
(赋值)、+=
(加等于)、-=
(减等于)、*=
(乘等于)、/=
(除等于)、%=
(取模等于)、**=
(幂等于)、//=
(整除等于)。例如:num = 5
num += 3 # 相当于num = num + 3,结果num为8
age = 18
if age < 18:
print("未成年人")
elif age == 18:
print("刚成年")
else:
print("成年人")
fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
print(fruit)
count = 0
while count < 5:
print(count)
count += 1
for i in range(10):
if i == 5:
break
print(i)
for i in range(10):
if i % 2 == 0:
continue
print(i)
my_list = [1, 2, 3, 'apple', 3.14]
my_list = [1, 2, 3, 'apple', 3.14]
print(my_list[0]) # 输出1
print(my_list[3]) # 输出'apple'
my_list = [1, 2, 3, 'apple', 3.14]
my_list[0] = 10
print(my_list) # 输出[10, 2, 3, 'apple', 3.14]
append()
:在列表末尾添加一个元素。my_list = [1, 2, 3]
my_list.append(4)
print(my_list) # 输出[1, 2, 3, 4]
- `extend()`:将一个可迭代对象的元素添加到列表中。
my_list = [1, 2, 3]
new_list = [4, 5]
my_list.extend(new_list)
print(my_list) # 输出[1, 2, 3, 4, 5]
- `insert()`:在指定位置插入一个元素。
my_list = [1, 2, 3]
my_list.insert(1, 1.5)
print(my_list) # 输出[1, 1.5, 2, 3]
- `remove()`:移除列表中第一个匹配的元素。
my_list = [1, 2, 3, 2]
my_list.remove(2)
print(my_list) # 输出[1, 3, 2]
- `pop()`:移除并返回指定位置的元素,默认移除最后一个元素。
my_list = [1, 2, 3]
element = my_list.pop(1)
print(element) # 输出2
print(my_list) # 输出[1, 3]
my_tuple = (1, 2, 3, 'apple')
# 也可以省略括号
my_tuple = 1, 2, 3, 'apple'
my_tuple = (1, 2, 3, 'apple')
print(my_tuple[0]) # 输出1
print(my_tuple[3]) # 输出'apple'
my_set = {1, 2, 3, 3} # 自动去重,实际集合为{1, 2, 3}
# 也可以使用set()函数创建
my_set = set([1, 2, 3, 3])
add()
:添加一个元素。my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # 输出{1, 2, 3, 4}
- `remove()`:移除一个元素,如果元素不存在会报错。
my_set = {1, 2, 3}
my_set.remove(2)
print(my_set) # 输出{1, 3}
- `discard()`:移除一个元素,如果元素不存在不会报错。
my_set = {1, 2, 3}
my_set.discard(4)
print(my_set) # 输出{1, 2, 3}
- `union()`:返回两个集合的并集。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
result = set1.union(set2)
print(result) # 输出{1, 2, 3, 4, 5}
- `intersection()`:返回两个集合的交集。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
result = set1.intersection(set2)
print(result) # 输出{3}
my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}
my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}
print(my_dict['name']) # 输出'John'
my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}
my_dict['age'] = 26
print(my_dict) # 输出{'name': 'John', 'age': 26, 'city': 'New York'}
keys()
:返回字典的所有键。my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}
keys = my_dict.keys()
print(keys) # 输出dict_keys(['name', 'age', 'city'])
- `values()`:返回字典的所有值。
my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}
values = my_dict.values()
print(values) # 输出dict_values(['John', 25, 'New York'])
- `items()`:返回字典的所有键值对。
my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}
items = my_dict.items()
print(items) # 输出dict_items([('name', 'John'), ('age', 25), ('city', 'New York')])
- `get()`:通过键获取值,如果键不存在返回默认值(默认为 None)。
my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}
value = my_dict.get('name')
print(value) # 输出'John'
value = my_dict.get('gender', 'Unknown')
print(value) # 输出'Unknown'
def add_numbers(a, b):
return a + b
def greet(name, message):
print(f"{name}, {message}")
greet('John', 'Hello!')
def greet(name, message='Hello!'):
print(f"{name}, {message}")
greet('John')
greet('John', 'How are you?')
def sum_numbers(*args):
result = 0
for num in args:
result += num
return result
print(sum_numbers(1, 2, 3))
print(sum_numbers(1, 2, 3, 4, 5))
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name='John', age=25, city='New York')
add = lambda a, b: a + b
print(add(3, 5))
__iter__()
和__next__()
方法。my_list = [1, 2, 3]
my_iterator = iter(my_list)
print(next(my_iterator)) # 输出1
print(next(my_iterator)) # 输出2
print(next(my_iterator)) # 输出3
# 当没有更多元素时,会抛出StopIteration异常
# print(next(my_iterator))
yield
关键字来生成值,而不是使用return
。def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
fib = fibonacci()
print(next(fib)) # 输出0
print(next(fib)) # 输出1
print(next(fib)) # 输出1
print(next(fib)) # 输出2
squares = (i ** 2 for i in range(10))
print(next(squares)) # 输出0
print(next(squares)) # 输出1
print(next(squares)) # 输出4
def my_decorator(func):
def wrapper():
print("Before function execution")
func()
print("After function execution")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print(f"{self.name} is barking!")
my_dog = Dog('Buddy', 3)
my_dog.bark()
class GoldenRetriever(Dog):
def __init__(self, name, age, color):
super().__init__(name, age)
self.color = color
def fetch(self):
print(f"{self.name} is fetching!")
my_golden = GoldenRetriever('Charlie', 2, 'Golden')
my_golden.bark()
my_golden.fetch()
class Animal:
def speak(self):
pass
class Dog(Animal):
def speak(self):
print("Woof!")
class Cat(Animal):
def speak(self):
print("Meow!")
def make_animal_speak(animal):
animal.speak()
dog = Dog()
cat = Cat()
make_animal_speak(dog)
make_animal_speak(cat)
在这里,make_animal_speak
函数接受一个Animal
类型的对象,但是由于Dog
和Cat
类都继承自Animal
并且重写了speak
方法,所以根据传入对象的不同,speak
方法会表现出不同的行为,这就是多态性的体现。
class BankAccount:
def __init__(self, balance=0):
self._balance = balance
def deposit(self, amount):
if amount > 0:
self._balance += amount
print(f"Deposited {amount}. New balance: {self._balance}")
else:
print("Invalid deposit amount.")
def withdraw(self, amount):
if 0 < amount <= self._balance:
self._balance -= amount
print(f"Withdrew {amount}. New balance: {self._balance}")
else:
print("Insufficient funds or invalid withdrawal amount.")
account = BankAccount(1000)
account.deposit(500)
account.withdraw(300)
# 虽然可以通过account._balance直接访问,但不建议这样做,破坏了封装性
在这个例子中,_balance
前面的下划线表示它是一个“私有”属性,理论上不应该从类的外部直接访问,而应该通过类提供的deposit
和withdraw
方法来操作它。
__init__
、__str__
等。__str__
方法用于定义对象的字符串表示形式,当使用print
函数输出对象时会调用这个方法。class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return f"Point({self.x}, {self.y})"
point = Point(3, 4)
print(point)
__len__
方法用于定义对象的长度,当使用len
函数时会调用这个方法。class MyList:
def __init__(self):
self.data = []
def append(self, item):
self.data.append(item)
def __len__(self):
return len(self.data)
my_list = MyList()
my_list.append(1)
my_list.append(2)
print(len(my_list))
try - except
语句来捕获和处理异常。try:
result = 10 / 0
except ZeroDivisionError:
print("Division by zero is not allowed.")
try:
my_list = [1, 2, 3]
print(my_list[5])
result = 10 / 0
except IndexError:
print("Index out of range.")
except ZeroDivisionError:
print("Division by zero is not allowed.")
else
和finally
子句
else
子句在try
块中没有发生异常时执行。finally
子句无论是否发生异常都会执行。try:
num = int("10")
except ValueError:
print("Invalid number conversion.")
else:
print(f"Converted number: {num}")
finally:
print("This will always be printed.")
.py
。通过导入模块,可以使用其中定义的函数、类和变量。my_module.py
文件:# my_module.py
def add(a, b):
return a + b
def multiply(a, b):
return a * b
import my_module
result = my_module.add(3, 5)
print(result)
result = my_module.multiply(4, 6)
print(result)
from...import
语句导入模块中的特定内容:from my_module import add, multiply
result = add(3, 5)
print(result)
result = multiply(4, 6)
print(result)
__init__.py
文件(在Python 3.3+中,这个文件可以为空,但它仍然用于标识该目录是一个包)。my_package/
__init__.py
module1.py
module2.py
module1.py
中定义一些内容:# module1.py
def greet():
print("Hello from module1!")
module2.py
中定义一些内容:# module2.py
def farewell():
print("Goodbye from module2!")
import my_package.module1
import my_package.module2
my_package.module1.greet()
my_package.module2.farewell()
from...import
语句:from my_package.module1 import greet
from my_package.module2 import farewell
greet()
farewell()
import numpy as np
# 创建一维数组
arr1d = np.array([1, 2, 3, 4, 5])
print(arr1d)
# 创建二维数组
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d)
# 创建全零数组
zeros_arr = np.zeros((3, 4))
print(zeros_arr)
# 创建全一数组
ones_arr = np.ones((2, 3))
print(ones_arr)
# 创建指定范围的数组
range_arr = np.arange(1, 10, 2)
print(range_arr)
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(arr[3])
print(arr[2:7])
print(arr[::2])
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr2d[1, 2])
print(arr2d[0:2, 1:])
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
add_result = arr1 + arr2
print(add_result)
multiply_result = arr1 * arr2
print(multiply_result)
square_result = np.square(arr1)
print(square_result)
sum_result = np.sum(arr1)
print(sum_result)
import pandas as pd
# 读取CSV文件
data = pd.read_csv('data.csv')
print(data.head())
# 写入CSV文件
data.to_csv('new_data.csv', index=False)
import pandas as pd
data = pd.read_csv('data.csv')
# 选择列
column_data = data['column_name']
print(column_data)
# 选择行
row_data = data.iloc[0]
print(row_data)
# 过滤数据
filtered_data = data[data['age'] > 20]
print(filtered_data)
import pandas as pd
data = pd.read_csv('data_with_missing.csv')
# 删除含有缺失值的行
cleaned_data = data.dropna()
print(cleaned_data)
# 使用指定值填充缺失值
data.fillna(0, inplace=True)
print(data)
import pandas as pd
data = pd.read_csv('data_with_duplicates.csv')
# 删除重复行
unique_data = data.drop_duplicates()
print(unique_data)
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Sine Wave')
plt.show()
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
plt.subplot(2, 1, 1)
plt.plot(x, y1)
plt.title('Sine Wave')
plt.subplot(2, 1, 2)
plt.plot(x, y2)
plt.title('Cosine Wave')
plt.tight_layout()
plt.show()
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'This is the index page.'
@app.route('/about')
def about():
return 'This is the about page.'
if __name__ == '__main__':
app.run()
django - admin startproject myproject
settings.py
文件,如数据库配置、静态文件路径等。models.py
文件中定义模型类:from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
publication_date = models.DateField()
python manage.py makemigrations
python manage.py migrate
views.py
文件中定义视图函数:from django.http import HttpResponse
from.models import Book
def book_list(request):
books = Book.objects.all()
response = ""
for book in books:
response += f"{book.title} by {book.author} - {book.publication_date}
"
return HttpResponse(response)
urls.py
文件中配置URL:from django.contrib import admin
from django.urls import path
from. import views
urlpatterns = [
path('admin/', admin.site.urls),
path('books/', views.book_list, name='book_list'),
]
Python 作为一门功能强大且应用广泛的编程语言,其知识体系涵盖了从基础语法到高级特性,再到丰富的库和框架。通过掌握这些知识,开发者可以在多个领域进行高效的编程工作,如数据分析、Web 开发、人工智能等。希望本汇总能够帮助读者全面深入地理解和掌握 Python 编程,为实际项目开发打下坚实的基础。在学习过程中,建议读者多进行实践,通过实际项目来加深对知识的理解和运用。