开始发车
一、变量和数据类型
- 变量赋值
# 整数
x = 10
# 浮点数
y = 3.14
# 字符串
name = "jiang"
# 布尔值
is_true = True
-
数据类型
- 整数(int)
- 浮点数(float)
- 字符串(str)
- 布尔值(bool)
- 列表(list)
- 元组(tuple)
- 字典(dict)
- 集合(set)
二、条件语句
- if 语句
if x > 5:
print("x is greater than 5")
- elif 和 else
if x > 10:
print("x is greater than 10")
elif x > 5:
print("x is between 5 and 10")
else:
print("x is less than or equal to 5")
三、循环
- for 循环
for i in range(5):
print(i) # 输出0,1,2,3,4
# 注意,range内的范围是左闭右开的,没有规定左边界就从0开始
- while 循环
i = 0
while i < 5:
print(i)
i += 1
四、函数
def greet(name):
print("Hello, " + name + "!")
greet("Alice") # 输出:Hello, Alice!
五、列表和元组
- 列表
fruits = ["apple", "banana", "cherry"]
fruits.append("orange") # 添加元素
print(fruits[0]) # 访问第一个元素
- 元组
colors = ("red", "green", "blue")
# ⚠️注意:元组是不可变的
六、字典
person = {
"name": "jiang",
"age": 23,
"city": "泉州"
}
print(person["name"]) # 输出:jiang
七、文件操作
# 打开文件
file = open("example.txt", "r")
# 读取文件内容
content = file.read()
print(content)
# 关闭文件
file.close()
八、模块和包
Python通过模块和包来组织代码。你可以使用import语句来导入模块或包中的功能。
import math
print(math.sqrt(16)) # 输出:4.0
九、异常处理
Python使用try/except语句块来处理程序运行时可能出现的异常情况。
try:
# 尝试执行的代码块
result = 10 / 0
except ZeroDivisionError:
# 当发生除以零错误时执行的代码块
print("Cannot divide by zero!")
你还可以使用finally子句来执行无论如何都需要运行的代码,比如资源清理操作。
十、列表推导式(List Comprehensions)
列表推导式是一种简洁地创建列表(注意区分列表和元组,元组是不可变的!!🧐)的方法。
# 创建一个包含1到10的平方的列表
squares = [x**2 for x in range(1, 11)]
print(squares) # 输出: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
十一、字典推导式(Dictionary Comprehensions)
类似地,字典推导式可以简洁地创建字典。
# 创建一个字典,其中键是1到5的数字,值是它们的平方
squares_dict = {x: x**2 for x in range(1, 6)}
print(squares_dict) # 输出: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
十二、生成器(Generators)
生成器是一种特殊类型的迭代器,它使用yield关键字而不是return来返回值。它们用于表示一个只能遍历一次的数据流。
# 创建一个生成器函数,产生1到5的平方
def square_generator(n):
for i in range(1, n+1):
yield i**2
# 使用生成器
gen = square_generator(5)
print(next(gen)) # 输出: 1
print(next(gen)) # 输出: 4
print(list(gen)) # 输出: [9, 16, 25]
十三、Lambda 函数
Lambda 函数是一种小型匿名函数,可以用作其他函数的参数。
# 定义一个lambda函数,计算两个数的和
add = lambda x, y: x + y
print(add(3, 5)) # 输出: 8
十四、类与对象(面向对象编程)
Python支持面向对象编程,允许你定义类来创建对象。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
print(f"Hello, my name is {self.name} and I'm {self.age} years old.")
# 创建Person类的对象
bob = Person("jiang", 23)
bob.greet() # 输出: Hello, my name is jiang and I'm 23 years old.
# 在Python中,字符串前的`f`或`F`前缀表示这是一个格式化字符串字面量(formatted string literal)
# 也叫做f-string。f-string是Python 3.6及以上版本中引入的一种新的字符串格式化方法
# 它提供了一种简洁、易读的方式来嵌入表达式到字符串中
#在f-string中,花括号 `{}` 内可以放置变量、表达式或函数调用
#它们的值会在运行时被计算并插入到字符串的相应位置
十五、装饰器(Decorators)
装饰器是一种修改函数或类行为的高级Python功能。它们允许你在不修改原函数或类代码的情况下,为其添加新功能。
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
# 输出:
# Something is happening before the function is called.
# Hello!
# Something is happening after the function is called.
十六、上下文管理器与with语句
with语句用于简化资源管理的代码,如文件操作、网络连接等。它确保了在代码块执行完毕后,资源会被正确地清理和关闭。
with open('example.txt', 'r') as file:
content = file.read()
# 文件会在此处自动关闭
十七、迭代器与可迭代对象
迭代器是实现了__iter__()和__next__()方法的对象,它们可以在一个序列中遍历元素。可迭代对象则是任何可以返回迭代器的对象。
# 创建一个迭代器对象
my_iter = iter([1, 2, 3])
print(next(my_iter)) # 输出: 1
print(next(my_iter)) # 输出: 2
十八、枚举(Enumerations)
枚举是一种特殊的类,用于表示固定数量的常量集。
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
print(Color.RED) # 输出: Color.RED——即枚举成员的名称
print(Color.RED.value)# 输出枚举成员的值
十九、生成器表达式(Generator Expressions)
生成器表达式类似于列表推导式,但它们返回的是一个生成器对象,用于按需生成元素,而不是一次性生成所有元素。
# 创建一个生成器表达式,产生1到10的平方
squares = (x**2 for x in range(1, 11)) # 记住左闭右开,其实就是[1,10]
print(next(squares)) # 输出: 1
print(list(squares)) # 输出: [4, 9, 16, 25, 36, 49, 64, 81, 100]
二十、动态类型
Python是一种动态类型的语言,这意味着你不需要在声明变量时指定其类型,Python解释器会在运行时自动确定。
“类型”通常指的是变量的数据类型。
有的编程语言要求我们在使用变量之前,必须先明确告诉它这个变量的类型,这就是所谓的“静态类型”。
常见的静态类型语言包括
Java、C、C++等。常见的动态类型语言有
Python、JavaScript、Ruby等。
x = 10 # x 是整数
x = "Hello" # x 现在是字符串
二十一、全局变量与局部变量
在函数内部定义的变量是局部变量,它们只在函数内部可见。在函数外部定义的变量是全局变量,它们在整个程序中都是可见的。
x = 10 # 全局变量
def my_function():
x = 5 # 局部变量
print(x) # 输出: 5
my_function()
print(x) # 输出: 10
二十二、输入与输出
Python提供了input()函数用于从用户那里获取输入,以及print()函数用于在屏幕上显示输出。
name = input("What is your name? ")
print("Hello, " + name + "!")
二十三、模块搜索路径
Python解释器通过模块搜索路径来查找导入的模块。你可以通过修改sys.path来添加或删除搜索路径。
import sys
sys.path.append('/path/to/my/modules')
二十四、多进程与多线程
这一点属于操作系统的知识,刚开始看不懂问题也不大,挑能看懂的看
我后面也会再出一些关于线程、进程之类的文章😊
Python支持多进程和多线程编程,但需要注意的是,由于全局解释器锁(GIL)的存在,Python的标准线程库并不能实现真正的并行计算。对于需要并行处理的任务,可以考虑使用multiprocessing模块或第三方库如concurrent.futures。
多进程:每个进程有自己独立的地址空间(内存空间),因此进程间的数据是分开的,这使得进程间的数据共享变得复杂,通常需要使用进程间通信(IPC)机制,如管道、共享内存、消息队列等。同时,多进程在创建、销毁和切换时相对复杂,速度较慢,且占用内存较多,CPU利用率可能较低。然而,由于进程间相互独立,一个进程的异常或崩溃通常不会影响其他进程。
多线程:线程是进程的子集,多个线程存在于同一进程的上下文中(看不懂没事,我会解释一下),共享相同的地址空间和资源。因此,线程间的数据共享变得简单,但也需要更谨慎的同步来避免竞争条件。多线程在创建、销毁和切换时相对简单,速度快,且占用内存较少,CPU利用率较高。但是,由于线程间共享资源,一个线程的异常或崩溃可能会导致整个进程的崩溃。
多个线程存在于同一进程的上下文中是什么意思?🧐用通俗的语言来说,就是这些线程都是“同一家人”,它们住在同一个“房子”(进程)里。这个“房子”里有共享的空间(内存),所以这些线程可以很方便地互相交换信息、使用共同的数据。但正因为它们住得这么近,有时候也可能会发生“争抢”或者“打架”的情况,这时候就需要一些“规则”(同步机制)来确保大家能够和谐共处。
二十五、Python的内置函数和模块
Python提供了大量的内置函数和模块,这些函数和模块为开发者提供了丰富的功能。例如,os模块提供了与操作系统交互的功能,sys模块提供了对Python解释器的一些变量和函数的访问,math模块包含了数学运算的函数等。
import os
import sys
import math
# 使用os模块获取当前工作目录
print(os.getcwd())
# 使用sys模块获取命令行参数
print(sys.argv)
# 使用math模块进行数学运算
print(math.sqrt(16)) # 输出: 4.0
最后
千里之行,始于足下。
这些内容对于Python这样一门优秀的语言来说当然是远远不够的。
但是希望这些内容能对你有所帮助!!
下次再见咯😁
溜🚗~