Python
2023-04-04 16:01:49 32 举报
AI智能生成
利用ChatGPT学习Python
作者其他创作
大纲/内容
基本概念, 历史, 应用领域
开发环境,常用的编辑器
Python基础
基本语法
变量和数据类型
变量
定义:
在编程中,变量是用来存储值的容器。Python 中,可以通过变量名来访问这个值。变量的定义通常包括两个部分:变量名和变量值。变量名是一个标识符,用来标识变量,变量值则是存储在变量中的数据
例子:
# 定义一个整型变量 age
age = 25
# 定义一个浮点型变量 price
price = 12.5
# 定义一个字符串变量 name
name = "Tom"
# 定义一个布尔型变量 is_student
is_student = True
age = 25
# 定义一个浮点型变量 price
price = 12.5
# 定义一个字符串变量 name
name = "Tom"
# 定义一个布尔型变量 is_student
is_student = True
类比:
你可以将变量想象成一个存储器或容器,它们可以存储不同类型的数据,比如数字、字符串、布尔值等。就像我们平时存放物品一样,我们可以在某个容器中存储一些物品,然后在需要使用时取出来。同样地,我们可以在编程中使用变量来存储数据,然后在需要使用时获取它们的值。
数据类型
定义:
在编程中,数据类型是指用来存储和操作数据的不同类型。在Python中,每个变量都有一个数据类型,而数据类型决定了变量可以存储的数据种类和范围,以及可以对这些数据执行的操作。
例子:
# 整数类型
a = 123
b = -456
# 浮点数类型
c = 3.14159
d = -2.5
# 布尔类型
e = True
f = False
# 字符串类型
g = "Hello, world!"
h = 'Python'
a = 123
b = -456
# 浮点数类型
c = 3.14159
d = -2.5
# 布尔类型
e = True
f = False
# 字符串类型
g = "Hello, world!"
h = 'Python'
# 列表类型
i = [1, 2, 3, 'hello', 5.6]
j = ['apple', 'banana', 'orange']
# 元组类型
k = (1, 2, 3, 'hello', 5.6)
l = ('apple', 'banana', 'orange')
# 集合类型
m = {1, 2, 3, 4, 5}
n = {2, 4, 6, 8}
# 字典类型
o = {'name': 'Tom', 'age': 18}
p = {'apple': 2.5, 'banana': 1.5, 'orange': 3.0}
类比:
你可以将数据类型想象成物品的种类,不同种类的物品可以存放在不同的容器中,也可以根据需要对它们进行不同的操作和处理。同样地,在编程中,不同类型的数据可以存储在不同类型的变量中,根据需要进行不同的操作和处理,以达到程序的预期目的。
运算符
定义:
在编程语言中,运算符是一种特殊的符号,用于执行各种数学、逻辑和比较运算,以及字符串拼接等操作。Python支持各种不同类型的运算符,包括算术运算符、比较运算符、逻辑运算符和位运算符等等
分类
算术运算符
a = 10
b = 3
c = a + b # 加法运算
d = a - b # 减法运算
e = a * b # 乘法运算
f = a / b # 除法运算
g = a % b # 取余运算
h = a ** b # 指数运算
b = 3
c = a + b # 加法运算
d = a - b # 减法运算
e = a * b # 乘法运算
f = a / b # 除法运算
g = a % b # 取余运算
h = a ** b # 指数运算
a = 10
b = 5
c = a + b
d = a * b
e = a % b
print(c) # 输出 15
print(d) # 输出 50
print(e) # 输出 0
比较运算符
a = 10
b = 3
c = a > b # 大于运算
d = a < b # 小于运算
e = a == b # 等于运算
f = a != b # 不等于运算
g = a >= b # 大于等于运算
h = a <= b # 小于等于运算
a = 10
b = 5
c = a > b
d = a == b
e = a != b
print(c) # 输出 True
print(d) # 输出 False
print(e) # 输出 True
逻辑运算符
a = True
b = False
c = a and b # 与运算
d = a or b # 或运算
e = not a # 非运算
a = True
b = False
c = a and b
d = a or b
e = not a
print(c) # 输出 False
print(d) # 输出 True
print(e) # 输出 False
位运算符
a = 60 # 二进制表示为 0011 1100
b = 13 # 二进制表示为 0000 1101
c = a & b # 按位与运算,结果为 0000 1100
d = a | b # 按位或运算,结果为 0011 1101
e = a ^ b # 按位异或运算,结果为 0011 0001
f = ~a # 按位取反运算,结果为 1100 0011
g = a << 2 # 左移运算,将 a 的二进制表示左移 2 位,结果为 1111 0000
h = a >> 2 # 右移运算,将 a 的二进制表示右移 2 位,结果为 0000 1111
类比:
运算符可以类比于数学中的运算符,例如加号、减号、乘号等,用于执行数学计算。在编程中,运算符可以用于对变量和数据类型进行操作和计算,如加减乘除、逻辑判断等。
表达式
定义:
表达式是由变量、常量、运算符和函数等组合而成的一个式子,用于表示一个值或计算一个值
例子:
算术表达式
x = 2
y = 3
z = x + y * 2
print(z) # 输出 8
x = 2
y = 3
z = x + y * 2
print(z) # 输出 8
逻辑表达式
a = 5
b = 3
print(a > 3 and b < 2) # 输出 False
字符串表达式
name = 'Jack'
age = 25
print('My name is ' + name + ', and I am ' + str(age) + ' years old.')
# 输出 My name is Jack, and I am 25 years old.
类比:
表达式可以类比于数学中的表达式,例如加减乘除、函数等,用于表示一个值或计算一个值。在编程中,表达式可以用于对变量和数据类型进行操作和计算,如算术表达式、逻辑表达式、字符串表达式等。
流程控制
定义:
流程控制是指通过编程语言提供的语句和结构,控制程序中的语句执行顺序和执行次数,以达到程序的控制流转和执行目的。
常用的分类
条件语句(if-else语句、elif语句)
age = 18
if age >= 18:
print('成年')
else:
print('未成年')
if age >= 18:
print('成年')
else:
print('未成年')
循环语句(for循环、while循环)
# for循环
for i in range(1, 10):
print(i)
# while循环
i = 1
while i <= 10:
print(i)
i += 1
跳转语句(break语句、continue语句、return语句)
# break语句
for i in range(1, 10):
if i == 5:
break
print(i)
# continue语句
for i in range(1, 10):
if i % 2 == 0:
continue
print(i)
# return语句
def add(x, y):
return x + y
类比:
流程控制可以类比于日常生活中的决策过程,如判断是否买下一件商品、执行何种工作流程等。在编程中,通过流程控制语句可以控制程序的执行顺序和执行次数,使程序按照开发者的意愿执行,达到所需的计算和处理结果。
函数,模块,文件操作
函数
函数的定义和调用
函数是一段可重用的代码,可以在程序的不同部分多次调用。
定义函数的语法如下
定义函数的语法如下
def function_name(parameters):
"""
函数文档字符串
"""
function_body
return [expression]
其中,function_name 是函数名,parameters 是函数的参数,可以是零个、一个或多个,多个参数之间以逗号分隔。function_body 是函数的主体部分,其中包含了函数的具体实现。return 语句用于返回函数的结果,可以省略。
function_body 是函数的主体部分,包含了函数的具体实现。在函数主体中可以包含各种语句、表达式等,用于完成函数的功能。
函数主体中可以包含多个语句和表达式,这些语句和表达式会按照顺序依次执行。当函数执行完所有语句和表达式后,如果存在返回值,函数会将其返回。
以下是一个示例函数,其中 function_body 包含了多个语句和表达式:
def calculate_sum(numbers):
"""
计算数字列表中的和
"""
total = 0
for number in numbers:
total += number
return total
该函数的功能是计算一个数字列表中的所有数字之和。在函数主体中,定义了一个变量 total 并将其初始化为 0。
然后,通过 for 循环遍历 numbers 列表中的每个数字,并将其加到 total 中。最后,使用 return 语句返回计算结果 total。
当我们调用该函数时,可以向其传递一个数字列表作为参数,如下所示:
numbers = [1, 2, 3, 4, 5]
result = calculate_sum(numbers)
print(result)
以上代码会输出数字列表 [1, 2, 3, 4, 5] 的和,即 15。
函数主体中可以包含多个语句和表达式,这些语句和表达式会按照顺序依次执行。当函数执行完所有语句和表达式后,如果存在返回值,函数会将其返回。
以下是一个示例函数,其中 function_body 包含了多个语句和表达式:
def calculate_sum(numbers):
"""
计算数字列表中的和
"""
total = 0
for number in numbers:
total += number
return total
该函数的功能是计算一个数字列表中的所有数字之和。在函数主体中,定义了一个变量 total 并将其初始化为 0。
然后,通过 for 循环遍历 numbers 列表中的每个数字,并将其加到 total 中。最后,使用 return 语句返回计算结果 total。
当我们调用该函数时,可以向其传递一个数字列表作为参数,如下所示:
numbers = [1, 2, 3, 4, 5]
result = calculate_sum(numbers)
print(result)
以上代码会输出数字列表 [1, 2, 3, 4, 5] 的和,即 15。
函数的调用通过函数名和实参列表进行。例如:
def add(x, y):
return x + y
result = add(2, 3)
print(result)
以上代码定义了一个名为 add 的函数,该函数有两个参数 x 和 y,并且返回它们的和。在调用 add 函数时,传入实参 2 和 3,将计算结果赋值给变量 result,最后将结果打印输出。
函数参数的传递
位置参数
位置参数是最常见的一种参数传递方式。
它指的是函数调用时,按照函数定义中参数的位置依次传递实参
它指的是函数调用时,按照函数定义中参数的位置依次传递实参
def add(x, y):
return x + y
result = add(3, 4)
print(result) # 输出 7
在上面的例子中,函数 add 的定义中有两个参数 x 和 y,它们分别对应着函数调用时传递的实参 3 和 4。
由于 3 和 4 的位置分别对应着函数定义中的第一个参数 x 和第二个参数 y,所以最终函数返回的结果是 7。
由于 3 和 4 的位置分别对应着函数定义中的第一个参数 x 和第二个参数 y,所以最终函数返回的结果是 7。
关键字参数
关键字参数是指在函数调用时,通过指定参数名来传递实参。
使用关键字参数可以避免位置传递时参数顺序的问题
def add(x, y):
return x + y
result = add(y=4, x=3)
print(result) # 输出 7
在上面的例子中,函数 add 的调用使用了关键字参数。
通过指定参数名 y 和 x,我们将实参 4 和 3 传递给了函数 add,并且不必考虑它们在函数定义中的顺序。
默认参数
默认参数是指在函数定义时,为参数指定默认值。
当函数调用时没有传递对应的参数时,将使用该参数的默认值
def add(x, y=2):
return x + y
result1 = add(3)
result2 = add(3, 4)
print(result1) # 输出 5
print(result2) # 输出 7
在上面的例子中,函数 add 的第二个参数 y 指定了默认值 2。
当我们在函数调用时没有为 y 参数传递实参时,将自动使用其默认值 2。
可变参数
可变参数指的是在函数定义时,允许传递任意数量的实参。
Python 中提供了两种可变参数的方式:*args 和 **kwargs。
*args 表示接收任意数量的位置参数,这些参数将被封装成一个元组传递给函数
**kwargs表示函数参数是一个字典,也可以接收任意个参数,
Python 中提供了两种可变参数的方式:*args 和 **kwargs。
*args 表示接收任意数量的位置参数,这些参数将被封装成一个元组传递给函数
**kwargs表示函数参数是一个字典,也可以接收任意个参数,
def add(*args):
total = 0
for arg in args:
total += arg
return total
result1 = add(1, 2, 3)
result2 = add(1, 2, 3, 4, 5)
print(result1) # 输出 6
print(result2) # 输出 15
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name='John', age=20) # 输出 name: John age: 20
print_info(name='Mary', gender='female', city='New York') # 输出 name: Mary gender: female city: New York
函数的返回值
函数的返回值是指函数执行完成后向函数调用者返回的数据结果。
在Python中,使用return语句来定义函数的返回值。
def add(x, y):
result = x + y
return result
print(add(2, 3)) # 输出5
如果函数没有指定返回值,则默认返回None。
如果函数中有多个return语句,则只会执行第一个return语句并返回结果。
需要注意的是,函数的返回值可以是任意数据类型,例如整数、浮点数、字符串、列表、元组、字典、自定义类型等。
在函数中可以使用多个return语句返回不同的结果,但是建议在函数中只返回一个结果,使函数的使用更加清晰和简单
模块
模块的定义
模块就是一个包含了Python定义和声明的文件,文件名就是模块名,以.py为后缀。
模块可以包含函数、变量、类以及可执行的Python代码等
模块可以包含函数、变量、类以及可执行的Python代码等
模块的创建
创建模块非常简单,只需要编写一个Python文件,
文件名即为模块名,然后在其中定义变量、函数、类等即可。
模块的导入
要使用一个模块中的函数、变量或类,需要先将模块导入到当前的Python环境中。
Python提供了三种导入模块的方式:import语句、from...import语句以及__import__()函数
Python提供了三种导入模块的方式:import语句、from...import语句以及__import__()函数
import math
from math import pi
print(pi) # 输出圆周率
模块中函数和变量
导入模块之后,可以使用点号(.)来访问模块中的函数和变量
import math
print(math.pi) # 输出圆周率
使用别名导入
import math as m
print(m.pi) # 输出圆周率
模块的命名空间
模块在Python中拥有自己的命名空间,这意味着模块中定义的变量、
函数和类名只能在该模块中使用,并不会与其他模块中的同名变量、函数和类名产生冲突。
模块的搜索路径
当Python解释器执行import语句时,会按照一定的顺序搜索模块。
这个顺序是由sys.path变量定义的,其中包括了Python解释器的默认搜索路径和用户自定义的搜索路径。
包的概念
包是一个包含了多个模块的特殊目录,其中必须包含一个名为__init__.py的文件,
它用于标识这个目录是一个Python包。与模块类似,我们可以使用import语句导入一个包中的模块
包的相对导入
包中的模块之间可以相互导入,Python提供了相对导入的语法来避免使用绝对路径进行导入。
相对导入可以使用点号..表示父级目录,点号.表示当前目录。相对导入只能在包内部使用,不能在模块中使用。
文件操作
文件的读取和写入操作
文件读取的基本流程是打开文件,读取文件内容,关闭文件
读取整个文件
with open('file.txt', 'r') as f:
content = f.read() # 将整个文件读取到content变量中
按行读取文件
with open('file.txt', 'r') as f:
for line in f:
print(line) # 按行读取文件内容,并输出每一行
读取指定字节数的内容
with open('file.txt', 'r') as f:
content = f.read(10) # 读取文件中前10个字节的内容,保存在content变量中
文件写入的基本流程是打开文件,写入文件内容,关闭文件
直接写入文件
with open('file.txt', 'w') as f:
f.write('Hello, World!') # 直接写入字符串到文件中
追加写入文件
with open('file.txt', 'a') as f:
f.write('Hello, Python!') # 在文件末尾追加写入字符串
写入列表内容到文件中
lines = ['Hello, World!\n', 'Hello, Python!\n']
with open('file.txt', 'w') as f:
f.writelines(lines) # 将列表中的内容逐行写入到文件中
在使用文件读写的过程中,需要注意文件打开和关闭的问题,以及字符编码的问题
常用的文件操作函数和方法
open() 函数:用于打开文件,并返回文件对象。
open() 函数的第一个参数是要打开的文件名,第二个参数是打开文件的模式
file = open('example.txt', 'r') # 以只读模式打开 example.txt 文件
close() 方法:用于关闭文件
file.close() # 关闭文件
read() 方法:用于读取文件
content = file.read() # 读取整个文件内容
readline() 方法:用于读取文件中的一行
line = file.readline() # 读取文件中的一行
write() 方法:用于向文件中写入内容
file.write('Hello, World!') # 向文件中写入字符串
seek() 方法:用于移动文件指针到指定位置
file.seek(0) # 移动文件指针到文件开头
tell() 方法:用于返回文件指针的当前位置
position = file.tell() # 返回文件指针的当前位置
其他文件操作相关的内容
文件打开模式
文件打开模式是指在打开文件时指定文件的打开方式,即读取、写入、追加等操作
文件指针
with语句
异常处理
目录操作
创建目录
可以使用os.mkdir()函数来创建目录。该函数需要传入目录路径作为参数。
如果创建的目录已经存在,则会抛出FileExistsError异常。
import os
# 创建目录
os.mkdir("mydir")
删除目录
可以使用os.rmdir()函数来删除目录。该函数需要传入目录路径作为参数。
如果删除的目录不存在,则会抛出FileNotFoundError异常。如果删除的目录非空,则会抛出OSError异常
import os
# 删除目录
os.rmdir("mydir")
修改当前工作目录
可以使用os.chdir()函数来修改当前工作目录。该函数需要传入目录路径作为参数。
调用该函数后,当前工作目录会变为指定的目录。
import os
# 修改当前工作目录
os.chdir("/path/to/mydir")
获取当前工作目录
可以使用os.getcwd()函数来获取当前工作目录。
该函数不需要传入任何参数,调用该函数后,会返回当前工作目录的路径
import os
# 获取当前工作目录
cwd = os.getcwd()
print(cwd)
获取目录中的文件列表
可以使用os.listdir()函数来获取目录中的文件列表。该函数需要传入目录路径作为参数。
调用该函数后,会返回一个包含目录中所有文件和子目录的列表。
import os
# 获取目录中的文件列表
files = os.listdir("/path/to/mydir")
print(files)
判断路径是否为目录
可以使用os.path.isdir()函数来判断指定路径是否为目录。
如果是目录,该函数会返回True,否则返回False。
import os
# 判断路径是否为目录
isdir = os.path.isdir("/path/to/mydir")
print(isdir)
判断路径是否为文件
可以使用os.path.isfile()函数来判断指定路径是否为文件。
如果是文件,该函数会返回True,否则返回False。
import os
# 判断路径是否为文件
isfile = os.path.isfile("/path/to/myfile.txt")
print(isfile)
文件对象的方法
面向对象
异常处理
python标准库
子主题
datetime
logging
高级特性
生成器
装饰器
迭代器
协程
Web开发基础
前端基础知识
html
css
JavaScript
HTTP协议 网络编程
HTTP
socket
Web框架
Flask
Django
数据库编程
mysql
redis
web安全
SQL注入
XSS攻击
Web开发实战
基于Flask或Django搭建一个简单的Web应用,如博客或电商网站
实现用户注册、登录、权限管理等功能
学习RESTful API开发
学习Web性能优化、高并发处理等知识
学习Web爬虫、数据分析、机器学习等高级应用
数据分析
爬虫
0 条评论
下一页