1.基本语法
算术运算符和逻辑运算符
# + 加法
print(1+2)
# - 减法
# * 乘法
# / 除法
# % 取模
print(3%2) #1
# // 取整除
print(3//2) #1
a=2
b=3
print(a==b)
if(a==b):
print("a等于b")
else:
print("a不等于b")
if(a<=b):
print("a小于等于b")
else:
print("a大于b")
if(a>=b):
print("a大于等于b")
else:
print("a小于b")
if(a!=b):
print("a不等于b")
else:
print("a等于b")
# and,or,not 逻辑运算符
if(a==2 and b==3):
print("a等于2且b等于2")
if(a==2 or b==3):
print("a等于2或b等于2")
if(not a==2):
print("a不等于2")
赋值运算符
c=3
d=1
c+=d #c=c+d
print(c) #4
c=3
d=1
c-=d #c=c-d
print(c) #2
2.数据类型
#数据类型:Number,String,List,Tuple,Set,Dictionary
aa=123 #数字
aaa=123.5 #数字——浮点数 float point (fp32)32位浮点数
bb="hello" #字符串
cc=[1,2,5,6] #cc=["haha","2","你","6"] #列表
dd=(1,2,3,4) #元组 python特有,大部分放在参数里面用
ee={1,2,3,4} #集合
ff={"name":"Tom","age":18} #字典 这个有2个元素,冒号左边名字,冒号右边值
#大语言模型中用的最多的是列表和字典
3.语法细节
aa=123 #数字
aaa=123.5 #数字——浮点数 float point (fp32)32位浮点数
bb="hello" #字符串
cc=[1,2,9,6] #cc=["haha","2","你","6"] #列表
dd=(1,2,3,4) #元组 python特有,大部分放在参数里面用
ee={1,2,3,4} #集合
ff={"name":"Tom","age":18} #字典 这个有2个元素,冒号左边名字,冒号右边值
#变量 类
#常用函数
#len长度
print(len(cc)) #4
print(len(ff)) #2
print(len(bb)) #5
#range范围
range(10) #0,1,2,3,4,5,6,7,8,9 从0到9
#enumerate
enumerate(bb) #0:'h',1:'e',2:'l',3:'l',4:'o' 不能直接打印
#for...in...循环
for x in enumerate(bb):
print(x)
#打印结果
#(0,'h')
#(1,'e')
#(2,'l')
#(3,'l')
#(4,'o')
#sorted排序
print(sorted(cc)) #[1,2,6,9]
#set去掉重复的字
text="北京天安门今天天气好好"
print(set(text)) #{'天','北','门','京','气','今','好','安','很'}
while true:
print("hello")
break
4.方法
4.1自定义方法
#自定义方法
def printMyNumber(myElement):
for x in enumerate(myElement):
print(x)
#调用
myelem1="hello world"
printMyNumber(myelem1)
#(0,'h')
#(1,'e')
#(2,'l')
#(3,'l')
#(4,'o')
#(5,' ')
#(6,'w')
#(7,'o')
#(8,'r')
#(9,'l')
#(10,'d')
定义了一个函数
getBatch()
,用于将输入的my_batch
列表转换为 PyTorch 的张量(tensor),并且指定了张量的类型为torch.long
(即 64 位整数类型)。通过此代码输出一个张量,其中包含
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
import torch def getBatch(my_batch): result=torch.tensor(my_batch,dtype=torch.long) return result myBatch=[1,2,3,4,5,6,7,8,9,10] #"中" print(getBatch(myBatch)) #tensor([1,2,3,4,5,6,7,8,9,10])
4.2类
d_model = 256
num_heads = 8
class TransformerBlock:
def __init__(self, d_model, num_heads):
self.d_model = d_model
self.num_heads = num_heads
def getDModel(self) :
return self.d_model
tf= TransformerBlock(d_model, num_heads)
print (tf.getDModel))#256
import torch.nn as nn
# 定义一个TransformerBlock类,继承自PyTorch的nn.Module
class TransformerBlock(nn.Module):
# 初始化函数,设置模型的维度(d_model)和头数(num_heads)
def __init__(self, d_model, num_heads):
super(TransformerBlock, self).__init__() # 调用父类的初始化函数
self.d_model = d_model # 设置d_model(模型维度)
self.num_heads = num_heads # 设置num_heads(注意力头数)
# 获取d_model(模型维度)的方法
def getDModel(self):
return self.d_model # 返回d_model值
# 前向传播函数(目前为空,未来会实现具体的逻辑)
def forward(self, x):
pass # 占位符,未来可以定义模型的前向传播逻辑
# 实例化TransformerBlock类,传入d_model和num_heads
d_model = 256 # 模型的维度
num_heads = 8 # 注意力头数
tf = TransformerBlock(d_model, num_heads) # 创建TransformerBlock对象
# 调用getDModel()方法,打印模型的维度
print(tf.getDModel()) # 输出:256
4.3调用第三方的“方法”(通过类.方法名)
使用
pandas
库创建并打印一个简单的 DataFrame。pandas
是 Python 中用于数据处理和分析的强大库,DataFrame
是其最常用的数据结构之一,类似于二维的表格数据。print(pd.DataFrame({"a":[1,2,3],"b":[4,5,6]})) # a b #0 1 4 #1 2 5 #2 3 6
import numpy as np # 导入 numpy 库,用于创建和操作数组 import pandas as pd # 导入 pandas 库,用于数据处理和分析 # 创建一个结构化数组(structured array) # np.array() 创建一个 3x3 的数组,每行是一个元组 (1, 2, 3),(4, 5, 6),(7, 8, 9) # dtype 是定义每个字段的数据类型,包含 'a'、'b' 和 'c' 字段 data = np.array([(1, 2, 3), (4, 5, 6), (7, 8, 9)], dtype=[("a", "i4"), ("b", "i4"), ("c", "i4")]) # 将 NumPy 结构化数组转换为 pandas DataFrame # columns 参数定义 DataFrame 的列名顺序,这里选取 'c' 和 'a' 两列 print(pd.DataFrame(data, columns=['c', 'a']))
4.4OpenAI库举例子
# 导入 OpenAI 库
from openai import OpenAI
# 创建一个 OpenAI 客户端实例
client = OpenAI()
# 创建一个聊天对话请求
completion = client.chat.completions.create(
model="gpt-3.5-turbo", # 使用 GPT-3.5 模型
messages=[ # 定义对话消息
{"role": "system", "content": "你是一个数学助手"}, # 系统消息,设定模型的角色
{"role": "user", "content": "3的平方根是多少?"} # 用户提问:3的平方根
]
)
# 打印模型生成的回答
print(completion.choices[0].message) # 打印模型对用户提问的回答
#如果代码成功执行并且模型正确回答用户的问题,输出可能类似于:3的平方根是大约 1.732。
4.5列表推导式
列表推导式的语法可以看作是:
[expression for item in iterable if condition]
# 定义一个包含数字的列表
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 使用传统的for循环实现,计算小于5的数字的平方
def getSqt(my_list):
result = [] # 创建一个空列表用于存放结果
for x in my_list: # 遍历my_list中的每个元素
if(x < 5): # 如果元素小于5
result.append(x**2) # 将该元素的平方添加到结果列表中
return result # 返回结果列表
# 打印传统方法的计算结果
print(getSqt(my_list)) # 输出:[1, 4, 9, 16]
# 使用列表推导式实现相同的功能
my_r2 = [x**2 for x in my_list if x < 5] # [1, 4, 9, 16]
# 打印使用列表推导式得到的结果
print(my_r2) # 输出:[1, 4, 9, 16]
4.6特殊print:print(f"Input text:{prompt}")
#特殊print:print(f"Input text:{prompt}")
# 定义城市名称和人口数量
city = "北京" # 城市名
population = 20000000 # 城市人口数量
# 使用 f-string 进行格式化打印
print(f"{city}市有{population}人口") # 输出:北京市有20000000人口