【大麦小米学量化】量化基础之Python编程(小白入门第一课)

系列文章目录

高频头男朋友

小米一边吃着冰激凌,一般若无其事地问大麦:“Hi,我说大麦哥哥,你学Python想干嘛呀?”
大麦:“我说小米妹妹,哥做的事儿,说出来,你也不懂!”
“不懂?!你没说怎么知道我不懂?”,小米不屑地看着大麦,眼神中流露出好奇和杀气。
“跟你说吧,我学Python是研究量化交易呢”,大麦随口说道,可把小米妹妹搞糊涂了。
紧接着大麦又补充说:“量化交易,就是通过数据计算生成交易信号来交易,你们觉得在手机APP上交易很了不起吧!其实,我们都不用人盯盘就可以让电脑自动交易,不懂了吧!”
小米轻蔑的噘嘴一笑道:“你懂!你懂!就你懂!我也是学过计算机的,谁怕谁,我也要学量化交易,不就是计算机编程嘛,我的高频头男朋友比你厉害!”
“高频头是谁!”
“这你都不知道,还编程呢,ChatGPT啊!”
“额,额,额,这也行!”,大麦一时语塞,竟无言以对。

前言

学习时间:对于初学编程者,大概需要一周时间;对于有编程基础的老手,看个人情况,也许一下午就OK了。
学习目标:掌握Python的基本语法,可以灵活运用list、dict,掌握时间转化和文件操作。
学习难点:函数、模块,以及list、dict、时间转换等。

一、Python是什么?

Python(英国发音:/ˈpaɪθən/;美国发音:/ˈpaɪθɑːn/)是一种计算机编程语言,它的创始人为Guido van Rossum。Python是一种通用的编程语言,旨在让人们更容易地编写代码。它是一种高级编程语言,意味着它比汇编语言更加抽象,更关注问题的解决,而非底层操作。

Python的设计目标是让代码更易于阅读和理解。它支持多种编程范式,包括面向对象、过程式和函数式编程。此外,Python是一种解释型语言,这意味着它可以在运行时逐行解释,这使得调试变得更容易。

Python被广泛应用于各种领域,包括Web开发、数据分析、人工智能、机器学习、网络编程、自动化脚本等。它拥有强大的社区和丰富的库,使得开发者可以快速解决问题并开发出高效的应用程序。

Python的语法简洁明了,易于学习。它的学习曲线相对平缓,使得初学者可以快速上手编写简单的程序。同时,Python也是一种非常强大的编程语言,可以用于开发大型的复杂应用程序。

二、Python基本语法

Python是一种高级编程语言,它的基本语法包括数据类型、变量、运算符、表达式、控制结构、函数、模块等。下面是对这些基本语法的一个简单介绍:

1. 数据类型:

Python支持多种数据类型,包括整数(int)、浮点数(float)、布尔值(bool)、字符串(str)、列表(list)、元组(tuple)、字典(dict)等。

整数(int):表示整数值,没有限制大小。例如:10、-20、0等。
浮点数(float):表示带有小数点的数值,包括正数和负数。例如:3.14、-2.56、0.0等。
布尔值(bool):表示逻辑值,只有两个取值,即True和False。
字符串(str):表示文本数据,可以使用单引号(')或双引号(")括起来。例如:“Hello, world!”、'python’等。
列表(list):表示有序的元素集合,可以使用方括号([])括起来,元素之间用逗号分隔。例如:[1, 2, 3, ‘a’, ‘b’, ‘c’]等。
元组(tuple):与列表类似,表示有序的元素集合,但元组是不可变的,即不能修改其中的元素。元组使用圆括号(())括起来,元素之间用逗号分隔。例如:(1, 2, 3, ‘a’, ‘b’, ‘c’)等。
字典(dict):表示键值对的集合,使用大括号({})括起来,键值对之间用冒号分隔,每个键值对之间用逗号分隔。例如:{‘name’: ‘Alice’, ‘age’: 20}等。

后面我们会重点介绍list和dict的使用,这两个在量化交易中会频繁使用,需要重点介绍。

2. 变量:

Python中的变量是一种存储数据的容器,可以存储各种类型的数据。变量使用变量名来引用,变量名必须以字母或下划线开头,不能使用数字开头。变量在声明后可以存储任何类型的数据。

在Python中,声明变量的方式很简单,只需要使用变量名(变量名相当于对变量的引用)和赋值运算符(=)来给变量赋值。例如:

x = 10   # 声明一个整数类型的变量x,并赋值为10
y = 3.14   # 声明一个浮点数类型的变量y,并赋值为3.14
z = "hello"   # 声明一个字符串类型的变量z,并赋值为"hello"

在Python中,变量名是区分大小写的,因此x和X是两个不同的变量。此外,Python具有动态类型系统,这意味着变量的类型可以随时改变。例如:

x = 10   # 声明一个整数类型的变量x,并赋值为10
print(x)   # 输出10

x = "hello"   # 将变量x的类型改为字符串,并赋值为"hello"
print(x)   # 输出"hello"

在Python中,还可以使用变量名来访问变量的值。例如:

x = 10
print(x)   # 输出10

print(y)   # 如果y未被声明,则会报错
z = "hello"
print(z)   # 输出"hello"

以上是Python变量的简单介绍和举例,希望能对您有所帮助。

3. 运算符:

Python支持多种运算符,包括算术运算符(如+、-、*、/等)、比较运算符(如==、!=、<、>等)、逻辑运算符(如and、or、not等)和位运算符(如&、|、^、~等)。Python中有很多常用的运算符,下面是对这些运算符的简单介绍和举例:

  1. 算术运算符:
    +:加法,例如2 + 3 = 5。
    -:减法,例如5 - 3 = 2。
    *:乘法,例如2 * 3 = 6。
    /:除法,例如6 / 3 = 2。
    %:取余数,例如7 % 2 = 1。
    **:乘方,例如2 ** 3 = 8。
  2. 比较运算符:
    ==:等于,例如2 == 3(False)。
    !=:不等于,例如2 != 3(True)。
    <:小于,例如2 < 3(True)。
    =>:大于,例如2 > 3(False)。
    <=:小于等于,例如2 <= 3(True)。
    >=:大于等于,例如2 >= 3(False)。
  3. 逻辑运算符:
    and:逻辑与,例如True and False(False)。
    or:逻辑或,例如True or False(True)。
    not:逻辑非,例如not True(False)。
  4. 位运算符:
    &:按位与,例如10 & 13(10)。
    |:按位或,例如10 | 13(13)。
    ^:按位异或,例如10 ^ 13(7)。
    ~:按位取反,例如~10(-11)。
  5. 赋值运算符:
    =:赋值,例如x = 10。
    +=:加并赋值,例如x += 5相当于x = x + 5。
    -=:减并赋值,例如x -= 5相当于x = x - 5。
    *=:乘并赋值,例如x *= 5相当于x = x * 5。
    /=:除并赋值,例如x /= 5相当于x = x / 5。
    %=:取余并赋值,例如x %= 5相当于x = x % 5。
    **=:乘方并赋值,例如x **= 5相当于x = x ** 5。
  6. 其他运算符:
    in:成员运算符,用于判断一个值是否在序列中,例如’a’ in [‘a’, ‘b’, ‘c’](True)。
    not in:成员运算符,用于判断一个值是否不在序列中,例如’d’ not in [‘a’, ‘b’, ‘c’](True)。
    is:身份运算符,用于判断两个引用是否指向同一个对象,例如a = [1, 2, 3]; b = a; print(a is b)(True)。
    is not:身份运算符,用于判断两个引用是否不指向同一个对象,例如a = [1, 2, 3]; b = a[:]; print(a is not b)(True)。

4. 表达式:

表达式是由操作数和运算符组成的语法结构,可以用于计算和表示数值。Python中有很多常用的表达式,下面是对这些表达式的简单介绍和举例:

  1. 算术表达式:
    绝对值表达式:abs(-2) -> 2。
    取整(向下取整)表达式:int(3.14) -> 3。
    取整(向上取整)表达式:ceil(3.14) -> 4。
    四舍五入表达式:round(3.14) -> 3。
    取余数表达式:divmod(10, 3) -> (3, 1)。
  2. 关系表达式:
    不等于表达式:2 != 3(True)。
    大于表达式:3 > 2(True)。
    小于表达式:2 < 3(True)。
    大于等于表达式:3 >= 2(True)。
    小于等于表达式:2 <= 3(True)。
  3. 逻辑表达式:
    and:逻辑与,例如True and False(False)。
    or:逻辑或,例如True or False(True)。
    not:逻辑非,例如not True(False)。
  4. 位运算表达式:
    按位与表达式:10 & 13(10)。
    按位或表达式:10 | 13(13)。
    按位异或表达式:10 ^ 13(7)。
    按位取反表达式:~10(-11)。
  5. 赋值表达式:
    x += y 等价于 x = x + y。
    x -= y 等价于 x = x - y。
    x *= y 等价于 x = x * y。
    x /= y 等价于 x = x / y。
    x %= y 等价于 x = x % y。
    x **= y 等价于 x = x **y。
  6. 其他常用表达式:
    in/not in:成员运算符,用于判断一个值是否在序列中。
    is/is not:身份运算符,用于判断两个引用是否指向同一个对象。
  7. 三目运算符(条件表达式):
    例如a > b > c的运算是先比较a和b,得到一个布尔值,然后再比较这个布尔值和c,例如a > b > c为True时,实际运算过程相当于a > b and b > c。

5. 控制结构:

Python支持多种控制结构,包括条件语句(if)、循环语句(for、while)、跳转语句(break、continue)等。Python中有很多常用的控制结构,下面是对这些控制结构的简单介绍和举例:

  1. if语句:
    示例1:如果x大于0,则输出"x是正数"。
x = 10
if x > 0:
    print("x是正数")

示例2:如果x等于0,则输出"x是零",否则输出"x不是零"。

x = 0
if x == 0:
    print("x是零")
else:
    print("x不是零")
  1. elif语句:
    示例1:如果x大于0,则输出"x是正数",否则如果x等于0,则输出"x是零"。
x = 10
if x > 0:
    print("x是正数")
elif x == 0:
    print("x是零")
  1. else语句:
    示例1:如果x大于0,则输出"x是正数",否则输出"x不是正数"。
x = -10
if x > 0:
    print("x是正数")
else:
    print("x不是正数")
  1. while语句:
    示例1:当x小于10时,输出x的值,然后将x加1。
x = 0
while x < 10:
    print(x)
    x += 1
  1. for语句:
    示例1:打印列表中的所有元素。
my_list = [1, 2, 3, 4, 5]
for element in my_list:
    print(element)
  1. break语句:
    示例1:当x等于5时,跳出循环。
x = 0
while True:
    print(x)
    if x == 5:
        break
    x += 1
  1. continue语句:
    示例1:当x是奇数时,跳过本次循环。
x = 0
while True:
    if x % 2 == 0:
        print(x)
    else:
        continue
    if x == 5:
        break
    x += 1
  1. pass语句
    pass 是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。
x = 10
if x > 0:
    print("x是正数")
elif x == 0:
    print("x是零")
else:
	pass

6. 函数:

函数是一段可重用的代码块,可以用于实现特定的功能。函数可以接受参数并返回值。Python常用函数的介绍和举例如下:

Python常用内置函数介绍和举例:

  1. len(): 计算序列的长度,例如len(‘hello’)输出5。
  2. max(): 返回序列中的最大值,例如max([1, 2, 3, 4, 5])输出5。
  3. min(): 返回序列中的最小值,例如min([1, 2, 3, 4, 5])输出1。
  4. sum(): 求序列中所有元素的和,例如sum([1, 2, 3, 4, 5])输出15。
  5. sorted(): 对序列进行排序并返回排序后的序列,例如sorted([5, 3, 1, 4, 2])输出[1, 2, 3, 4, 5]。
  6. reversed(): 返回序列的反向序列(逆序),例如list(reversed([1, 2, 3, 4, 5]))输出[5, 4, 3, 2, 1]。
  7. map(): 将函数应用于序列的每个元素,并返回一个新的序列,例如list(map(lambda x: x*2, [1, 2, 3, 4, 5]))输出[2, 4, 6, 8, 10]。
  8. filter(): 根据条件过滤序列中的元素并返回一个新的序列,例如list(filter(lambda x: x%2==0, [1, 2, 3, 4, 5]))输出[2, 4]。
  9. zip(): 将多个序列打包成一个元组列表,例如list(zip([1, 2], [3, 4]))输出[(1, 3), (2, 4)]。
  10. range(): 生成一个整数序列,例如range(1, 6)输出[1, 2, 3, 4, 5]。

这些函数都是Python的内置函数,可以用于处理序列、集合、字典等数据类型。在实际开发中,我们也可以自己定义函数来实现特定的功能。

Python中自定义函数是一种用户自己编写的函数,可以用于封装特定的代码逻辑,以便在其他地方重复使用。

Python自定义函数的介绍和举例

下面是一个简单的Python自定义函数的示例:

def square(num):
    """
    计算给定数字的平方
    :param num: 数字
    :return: 数字的平方
    """
    result = num ** 2
    return result

在这个例子中,我们定义了一个名为square的函数,它接受一个参数num,并返回该数字的平方。函数的定义以关键字def开始,后面跟着函数名和参数列表。在函数体中,我们编写了计算平方的代码逻辑。最后,我们使用return语句返回计算结果。

要调用这个函数并计算某个数字的平方,可以使用以下代码:

my_num = 5
squared_num = square(my_num)
print(squared_num)  # 输出25

在这个例子中,我们将数字5赋值给变量my_num,然后调用square函数并传入my_num作为参数。函数返回计算结果,我们将其赋值给变量squared_num,并使用print语句输出结果。

除了上述示例,还可以根据实际需求自定义各种类型的函数,例如接受多个参数的函数、返回多个值的函数、带默认参数的函数、可变参数的函数等等。自定义函数可以大大提高代码的可重用性和可维护性,使程序更加模块化和高效。

7. 模块:

模块是一组Python代码的集合,可以包含函数、类和变量等。模块可以通过import语句导入并使用其中的代码。

Python模块的介绍和分类

Python模块(Module)是Python代码的基本单位,用于组织和封装特定功能或相关代码。模块可以包含变量、函数、类等Python对象,以便在其他Python程序中使用。

模块的创建通常以.py文件的形式存在,其中包含了模块的代码。通过将功能和代码组织到不同的模块中,可以提高代码的可重用性、可维护性和可测试性。

下面是一些Python模块的例子:

  1. 标准库模块:Python提供了丰富的标准库模块,这些模块涵盖了文件处理、网络编程、数据库访问、图形界面开发等众多方面。例如,os模块提供了操作系统相关的函数,math模块提供了数学计算相关的函数。
  2. 自定义模块:用户可以根据需要创建自定义模块,并将相关的函数和变量封装在其中。自定义模块可以是大型项目中的一部分,也可以是独立的可重用代码片段。例如,可以创建一个名为my_module.py的文件,其中包含一些自定义函数和类。
  3. 第三方模块:除了标准库之外,还有大量的第三方模块可供使用,这些模块涵盖了各种不同的领域。可以通过安装这些模块并将其导入到Python程序中,以使用其中的函数、类或工具。例如,numpy是一个用于科学计算的第三方模块,提供了高效的数学计算功能。
  4. 导入模块:要使用一个模块,需要在Python程序中使用import语句将其导入。导入模块后,可以访问其中的变量、函数和类等对象。例如:
import math
print(math.pi)  # 输出3.141592653589793

上述代码导入了math模块,并打印了其中的pi变量。

总之,模块是Python代码的重要组成部分,用于封装特定功能或相关代码,并可以在不同的Python程序中重复使用。

Python模块的应用举例

  1. 文件操作:使用os模块可以轻松地进行文件和目录操作,例如获取文件信息、读取文件内容、创建目录等。
import os

# 获取文件信息
stat_info = os.stat('example.txt')
print(stat_info.st_size)  # 输出文件大小

# 读取文件内容
with open('example.txt', 'r') as file:
    content = file.read()
print(content)
  1. 网络编程:使用socket模块可以进行网络通信编程,例如创建TCP连接、发送数据等。
import socket

# 创建TCP连接
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 8000))

# 发送数据
message = 'Hello, server!'
client_socket.send(message.encode())

# 接收数据
response = client_socket.recv(1024).decode()
print(response)

# 关闭连接
client_socket.close()
  1. 数据库访问:使用sqlite3模块可以方便地操作SQLite数据库,例如创建数据库连接、执行SQL查询等。
import sqlite3

# 创建数据库连接
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# 创建表
cursor.execute('''CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INT)''')

# 插入数据
cursor.execute("INSERT INTO users VALUES (1, 'Alice', 25)")
cursor.execute("INSERT INTO users VALUES (2, 'Bob', 30)")

# 查询数据
cursor.execute("SELECT * FROM users")
result = cursor.fetchall()
print(result)

# 关闭连接
conn.close()
  1. 图形界面开发:使用tkinter模块可以创建GUI应用程序,例如创建窗口、添加控件、处理事件等。
import tkinter as tk

# 创建窗口
window = tk.Tk()
window.title('Example App')
window.geometry('300x200')

# 添加标签控件
label = tk.Label(text='Hello, World!')
label.pack()

# 处理按钮点击事件
def button_clicked():
    label.config(text='Button clicked!')
    label.pack()
    print('Button clicked!')
    
button = tk.Button(text='Click Me!', command=button_clicked)
button.pack()

# 进入主循环
window.mainloop()

Python模块的引用方法举例

要引用Python模块中的函数或变量,需要使用import语句或from…import…语句。以下是引用方法的举例:

  1. 导入整个模块:
import math

这样就可以使用math模块中的函数,例如:

result = math.sqrt(16)  # 调用math模块的sqrt函数
print(result)           # 输出4.0
  1. 导入模块中的部分函数或变量:
from math import sqrt, ceil

这样就可以直接使用sqrt和ceil函数,而不需要通过模块名引用,例如:

result1 = sqrt(16)      # 调用math模块的sqrt函数
result2 = ceil(3.14)    # 调用math模块的ceil函数
print(result1)          # 输出4.0
print(result2)          # 输出4.0
  1. 在一个模块中导入另一个模块:
import module1
from module2 import function1, function2

这样就可以使用module1中的所有函数和变量,以及module2中的function1和function2函数。

三、list 的用法介绍

Python中的列表(list)是一种非常常用的数据结构,它是一种有序的集合,可以存储任意类型的数据。下面我们将介绍一些关于Python列表的基本使用方法。

创建列表

创建列表非常简单,只需要使用中括号 [] 并将元素包含在内,元素之间用逗号隔开。

my_list = [1, 2, 3, 'a', 'b', 'c']

访问列表元素

要访问列表中的元素,可以使用索引。索引是从0开始的,表示元素在列表中的位置。

print(my_list[0])  # 输出:1
print(my_list[3])  # 输出:'a'

修改列表元素

要修改列表中的元素,可以直接赋值。

my_list[0] = 100
print(my_list)  # 输出:[100, 2, 3, 'a', 'b', 'c']

添加元素到列表

要向列表中添加元素,可以使用 append() 方法。

my_list.append(4)
print(my_list)  # 输出:[100, 2, 3, 'a', 'b', 'c', 4]

从列表中删除元素

要从列表中删除元素,可以使用 remove() 方法,该方法会删除第一个匹配的元素。如果要删除指定位置的元素,可以使用 del 语句。

my_list.remove(100)  # 删除元素100
print(my_list)  # 输出:[2, 3, 'a', 'b', 'c', 4]

del my_list[0]  # 删除位置0的元素
print(my_list)  # 输出:[3, 'a', 'b', 'c', 4]

列表切片

列表切片是指从列表中选择一部分元素。语法是 list[start:end],其中 start 是切片开始的索引(包括该索引),end 是切片结束的索引(不包括该索引)。注意,切片是从左到右的。

my_list = [0, 1, 2, 3, 4, 5]
print(my_list[1:4])  # 输出:[1, 2, 3]

循环遍历列表

可以使用 for 循环来遍历列表中的所有元素。

my_list = [0, 1, 2, 3, 4, 5]
for element in my_list:
    print(element)

列表长度

可以使用 len() 函数来获取列表的长度。

my_list = [0, 1, 2, 3, 4, 5]
print(len(my_list))  # 输出:6

四、dict的用法介绍

Python中的字典(dict)是一种非常常用的数据结构,它是一种无序的键值对集合,可以通过键来访问对应的值。下面我们将介绍一些关于Python字典的基本使用方法。

创建字典

创建字典非常简单,只需要使用大括号 {} 并将键值对用冒号 : 分割,各个键值对之间用逗号 , 隔开。

my_dict = {
    
    'name': 'Alice', 'age': 25, 'gender': 'female'}

访问字典元素

要访问字典中的元素,可以使用键来索引。如果键不存在于字典中,则会抛出 KeyError 异常。为了避免异常,可以使用 get() 方法来获取指定键的值,如果键不存在则返回一个默认值。

print(my_dict['name'])  # 输出:'Alice'
print(my_dict.get('age'))  # 输出:25
print(my_dict.get('address', 'unknown'))  # 输出:'unknown',因为'address'键不存在

修改字典元素

要修改字典中的元素,可以直接赋值。如果键不存在,则会创建一个新的键值对。

my_dict['age'] = 26
print(my_dict)  # 输出:{'name': 'Alice', 'age': 26, 'gender': 'female'}

添加字典元素

要向字典中添加元素,可以直接赋值。如果键不存在,则会创建一个新的键值对。

my_dict['address'] = '123 Main St.'
print(my_dict)  # 输出:{'name': 'Alice', 'age': 26, 'gender': 'female', 'address': '123 Main St.'}

删除字典元素

要删除字典中的元素,可以使用 del 语句。如果要删除整个字典,可以使用 del 语句或 pop() 方法。

del my_dict['age']  # 删除键为'age'的元素
print(my_dict)  # 输出:{'name': 'Alice', 'gender': 'female', 'address': '123 Main St.'}

my_dict.pop('address')  # 删除键为'address'的元素,并返回其值
print(my_dict)  # 输出:{'name': 'Alice', 'gender': 'female'}

字典推导式

字典推导式是一种快速创建字典的方法,可以将一个列表或元组的元素转换为字典的键值对。其语法为 {key_expression for item in iterable}

names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
gender = ['female', 'male', 'male']
my_dict = {
    
    name: age + gender[i] for i, name in enumerate(names)}
print(my_dict)  # 输出:{'Alice': '25female', 'Bob': '30male', 'Charlie': '35male'}

五、list、dict的相互转换

  1. 将list转换为dict

将包含键值对的列表转换为字典,其中列表中的每个元素都是一个元组,包含两个元素,即键和值。

my_list = [('apple', 2), ('banana', 3), ('orange', 4)]
my_dict = dict(my_list)
print(my_dict)  # 输出:{'apple': 2, 'banana': 3, 'orange': 4}
  1. 将dict转换为list

将字典转换为包含单个元素的列表,其中每个元素都是一个元组,包含字典中的键和值。

my_dict = {
    
    'apple': 2, 'banana': 3, 'orange': 4}
my_list = list(my_dict.items())
print(my_list)  # 输出:[('apple', 2), ('banana', 3), ('orange', 4)]

六、日期、时间及与字符串时间互相转换

在Python中,我们经常需要处理日期和时间,以及将日期和时间转换为时间戳或从时间戳获取日期和时间。以下是一个关于如何在Python中进行日期、时间以及与时间戳互相转换的教程。

导入相关模块

首先,我们需要导入Python的datetime模块,该模块包含了许多处理日期和时间的类和方法。

import datetime

获取当前日期和时间

要获取当前日期和时间,我们可以使用datetime模块中的now()函数。

current_datetime = datetime.datetime.now()
print(current_datetime)

将日期和时间格式化为字符串

如果你想要将日期和时间格式化为特定的字符串格式,可以使用strftime()方法。以下是一些常用的格式化选项:

  • %Y:四位数的年份
  • %m:两位数的月份
  • %d:两位数的日期
  • %H:小时(24小时制)
  • %M:分钟
  • %S:秒
  • %f:微秒

例如,要将当前日期和时间格式化为"年-月-日 时:分:秒"的格式,可以执行以下操作:

current_datetime = datetime.datetime.now()
formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_datetime)

将字符串解析为日期和时间

如果有一个字符串表示日期和时间,并且该字符串的格式与strptime()方法的格式化字符串相匹配,则可以将该字符串解析为日期和时间对象。以下是一些示例:

string_datetime = "2023-07-06 15:30:00"
parsed_datetime = datetime.datetime.strptime(string_datetime, "%Y-%m-%d %H:%M:%S")
print(parsed_datetime)

将日期和时间转换为时间戳

我们可以使用datetime对象的timestamp()方法将其转换为时间戳。时间戳是从1970年1月1日午夜(UTC)开始的秒数。

current_datetime = datetime.datetime.now()
timestamp = current_datetime.timestamp()
print(timestamp)

将时间戳转换为日期和时间

要从时间戳获取日期和时间,我们可以使用datetime模块中的fromtimestamp()函数。

timestamp = 1695483600  # 这是一个示例时间戳
parsed_datetime = datetime.datetime.fromtimestamp(timestamp)
print(parsed_datetime)

以上就是在Python中进行日期、时间以及与时间戳互相转换的基本操作。

六、文件读写

在Python中,文件读写是一个常见的操作。下面简要介绍一下基本的文件读写方法,涵盖了不同的场景和操作。

打开文件

在Python中,使用open()函数打开文件。这个函数需要传递文件路径和模式作为参数。模式可以是以下几种:

  • ‘r’: 只读模式,打开文件用于读取。
  • ‘w’: 写入模式,打开文件用于写入。如果文件已经存在,它将被清空。如果文件不存在,将创建一个新文件。
  • ‘a’: 追加模式,打开文件用于在末尾追加内容。如果文件不存在,将创建一个新文件。
  • ‘x’: 创建模式,创建一个新文件。如果文件已经存在,将返回错误。

示例:

file = open('example.txt', 'r')  # 打开一个名为'example.txt'的文件用于读取

读取文件

有多种方法可以读取文件内容。以下是几种常见的方法:

  • read():一次性读取文件的全部内容。
  • readline():一次读取文件的一行内容。
  • readlines():一次读取文件的全部内容,并按行存储为列表。

示例:

file = open('example.txt', 'r')  # 打开一个名为'example.txt'的文件用于读取
content = file.read()  # 读取文件的全部内容
print(content)  # 打印文件的全部内容
file.close()  # 关闭文件

写入文件

要写入文件,可以使用write()方法。需要注意的是,使用写入模式打开文件时,如果文件已经存在,它的内容将被清空。如果要追加内容而不是覆盖原有内容,请使用追加模式。

示例:

file = open('example.txt', 'w')  # 打开一个名为'example.txt'的文件用于写入
file.write('Hello, world!')  # 将字符串'Hello, world!'写入文件
file.close()  # 关闭文件

追加内容到文件

要追加内容到文件,可以使用追加模式打开文件,并使用write()方法写入内容。

示例:

file = open('example.txt', 'a')  # 打开一个名为'example.txt'的文件用于追加
file.write('\nHello again, world!')  # 在文件的末尾追加字符串'\nHello again, world!'
file.close()  # 关闭文件

关闭文件

在使用完文件后,应该及时关闭它。这可以释放系统资源并确保文件的完整性和一致性。关闭文件可以使用close()方法。

示例:

file = open('example.txt', 'r')  # 打开一个名为'example.txt'的文件用于读取
content = file.read()  # 读取文件的全部内容
print(content)  # 打印文件的全部内容
file.close()  # 关闭文件

使用with语句操作文件

为了确保文件在使用后正确关闭,可以使用with语句来操作文件。这将自动关闭文件,无需手动调用close()方法。

示例:

with open('example.txt', 'r') as file:  # 使用with语句打开文件并赋值给变量file,无需手动关闭文件
    content = file.read()  # 读取文件的全部内容
    print(content)  # 打印文件的全部内容

总结

本篇文章,内容虽有些长,但很多我们知道这种表达是什么意思即可,不会的或忘了过来查就行。由于篇幅有限,Python还有很多应用技巧和知识,想学习更多,读者可自行深入搜索。

这里对量化交易所需的Python基础知识进行了展示和示例,方便大家后续跟进学习量化。量化所需要Python知识不多,更多的是通过list、dict、pandas对数据进行加工处理,再结合逻辑控制语句,生成交易信号,并调用API完成下单操作。

掌握了本篇知识,想必已经可以应付基本的Python代码读写。后续我们将结合不同的量化框架来学习量化交易。

猜你喜欢

转载自blog.csdn.net/popboy29/article/details/132462311
今日推荐