当前位置:首页>python>【Python学习】Python语言基础

【Python学习】Python语言基础

  • 2026-06-29 01:13:25
【Python学习】Python语言基础

前言

Python是一种面向对象、解释型、跨平台的高级编程语言,具有语法简洁、可读性强、生态丰富的特点,广泛应用于数据分析、人工智能、Web开发、自动化测试等领域。本教程针对零基础学习者,从环境搭建开始,逐步讲解Python基础语法、核心知识点,搭配大量实例代码,帮助大家快速入门Python,打下扎实的基础。

学习建议:本教程每一个知识点都配有实例,建议大家边看边动手运行代码,理解代码的执行逻辑,多练习、多思考,才能真正掌握Python基础。

第一章:Python环境搭建

1.1 什么是Python环境

Python环境是运行Python代码的基础,主要包括Python解释器(负责解析和执行Python代码)、编辑器(用于编写代码)。常见的环境搭配有两种:

  • 基础搭配:Python解释器 + 简单编辑器(如Notepad++、Sublime Text)

  • 集成环境(推荐新手):Anaconda(包含Python解释器、常用库、Spyder编辑器,一键安装,无需手动配置)

1.2 安装Python解释器(Windows系统)

  1. 下载安装包:访问Python官方网站(https://www.python.org/),点击“Downloads”,选择对应Windows系统的版本(推荐3.8及以上版本,兼容性更好)。

  2. 运行安装包:双击下载的.exe文件,勾选“Add Python 3.x to PATH”(关键步骤,避免后续配置环境变量),然后点击“Install Now”,等待安装完成。

  3. 验证安装:按下Win+R,输入“cmd”打开命令提示符,输入“python --version”,若显示Python版本号(如Python 3.10.0),则安装成功。

1.3 安装Anaconda(推荐新手)

  1. 下载安装包:访问Anaconda官方网站(https://www.anaconda.com/),点击“Download”,选择对应系统的版本(Windows/Mac/Linux)。

  2. 运行安装包:双击安装包,按照提示下一步操作,建议默认安装路径,勾选“Add Anaconda3 to my PATH environment variable”(可选,若未勾选,后续可手动配置)。

  3. 验证安装:安装完成后,打开“Anaconda Navigator”,若能正常启动,且Spyder、Jupyter Notebook等工具可正常打开,则安装成功。

1.4 选择编辑器

  • Spyder:Anaconda自带,界面简洁,适合新手,支持代码高亮、自动补全,可直接运行代码。

  • PyCharm:专业的Python编辑器,功能强大,适合大型项目开发,分为社区版(免费)和专业版(付费),新手可使用社区版。

  • Jupyter Notebook:基于浏览器的编辑器,适合数据分析、代码演示,可分段运行代码,方便查看结果。

第二章:Python基础语法入门

2.1 第一个Python程序

打开编辑器(以Spyder为例),新建一个.py文件(如hello.py),输入以下代码,点击运行按钮,即可看到输出结果。

# 第一个Python程序 print("Hello, Python!")

代码解释:

  • # 后面的内容是注释,Python会忽略注释,用于说明代码功能,提高可读性。

  • print()是Python内置函数,用于输出括号内的内容,括号内可以是字符串、数字等。

运行结果:Hello, Python!

2.2 注释规则

注释是代码中不执行的内容,用于解释代码、标注思路,方便自己和他人阅读。Python中有两种注释方式:

  1. 单行注释:以#开头,后面的内容为注释,只能注释一行。 # 这是单行注释 print("这是一个单行注释示例") # 注释也可以写在代码后面

  2. 多行注释:用三个单引号(''')或三个双引号(""")包裹,可注释多行内容。 ''' 这是多行注释 可以注释多行内容 适合详细说明代码功能 ''' """ 这也是多行注释 两种方式效果一致 """ print("这是多行注释示例")

2.3 缩进规则(重点)

Python与其他编程语言(如Java、C++)不同,它不使用大括号({})划分代码块,而是通过缩进来区分代码层级,缩进错误会导致程序报错,这是新手最容易踩的坑。

缩进规则:

  • 缩进一般使用4个空格(推荐)或1个制表符(Tab),但不能混合使用(如有的地方用空格,有的地方用Tab)。

  • 同一层级的代码,缩进必须一致;不同层级的代码,缩进不同。

# 正确缩进示例if 1 < 2:    print("1小于2")  # 缩进4个空格,属于if语句的代码块    print("缩进一致")  # 同一层级,缩进相同print("不属于if语句,无缩进")  # 与if同级,无缩进# 错误缩进示例(会报错)if 1 < 2:    print("正确缩进")  print("缩进不一致,报错")  # 缩进不足4个空格,与上一行层级不同,报错

2.4 变量与赋值

2.4.1 变量的定义

变量是用来存储数据的容器,就像一个盒子,我们可以把数据放进去,也可以随时取出、修改数据。Python中定义变量不需要声明数据类型,直接赋值即可。

# 变量赋值示例name = "张三"  # 变量name存储字符串"张三"age = 18       # 变量age存储整数18height = 1.75  # 变量height存储浮点数1.75is_student = True  # 变量is_student存储布尔值True# 输出变量的值print(name)      # 输出:张三print(age)       # 输出:18print(height)    # 输出:1.75print(is_student)# 输出:True

2.4.2 变量命名规则

变量命名有严格的规则,不符合规则会导致程序报错,具体规则如下:

  • 变量名只能由字母(a-z、A-Z)、数字(0-9)、下划线(_)组成,不能包含特殊符号(如@、#、$、空格等)。

  • 变量名不能以数字开头(如123name是错误的,name123是正确的)。

  • 变量名区分大小写(如Name和name是两个不同的变量)。

  • 不能使用Python内置关键字(如if、for、while、print等)作为变量名。

推荐命名方式:使用小写字母,多个单词之间用下划线连接(如student_name、user_age),简洁明了,符合Python的编码规范。

2.4.3 变量的修改与删除

# 变量修改name = "张三"print(name)  # 输出:张三name = "李四"  # 重新赋值,修改变量的值print(name)  # 输出:李四# 变量删除(使用del关键字)del name  # 删除变量name# print(name)  # 报错:name 'name' is not defined,因为变量已被删除

第三章:Python数据类型

Python中的数据类型分为基本数据类型和复合数据类型,基本数据类型是构成复杂数据的基础,常用的基本数据类型有:字符串(str)、整数(int)、浮点数(float)、布尔值(bool);复合数据类型将在后续章节讲解。

3.1 整数(int)

整数是没有小数部分的数字,包括正整数、负整数和0,Python中整数的取值范围没有限制,可大可小。

# 整数示例a = 10    # 正整数b = -5    # 负整数c = 0     # 0d = 1000000000000000000000  # 超大整数,Python支持# 查看数据类型(使用type()函数)print(type(a))  # 输出:<class 'int'>,表示a是int类型

3.2 浮点数(float)

浮点数是带有小数部分的数字,也可以表示科学计数法(如1.23e5表示123000)。

# 浮点数示例a = 3.14    # 普通浮点数b = -0.5    # 负浮点数c = 1.23e5  # 科学计数法,等价于123000d = 2.0     # 虽然小数部分是0,仍属于浮点数print(type(a))  # 输出:<class 'float'># 注意:浮点数运算可能存在精度问题print(0.1 + 0.2)  # 输出:0.30000000000000004,而非0.3# 解决方法:可使用round()函数保留指定小数位数print(round(0.1 + 0.21))  # 输出:0.3,保留1位小数

3.3 字符串(str)

字符串是由单个或多个字符组成的序列,用于表示文本信息,字符串必须用单引号(')、双引号(")或三引号('''/""")包裹。

3.3.1 字符串的定义

# 字符串示例s1 = 'Hello'          # 单引号包裹s2 = "Python"         # 双引号包裹s3 = '''I love Python'''  # 三单引号包裹(可换行)s4 = """Python is easy""" # 三双引号包裹(可换行)print(type(s1))  # 输出:<class 'str'>print(s3)        # 输出:I love Python

注意:单引号和双引号不能混合使用(如'str"是错误的);若字符串中包含单引号,可使用双引号包裹,反之亦然。

# 字符串中包含单引号s = "He said 'I am fine'"print(s)  # 输出:He said 'I am fine'# 字符串中包含双引号s = 'She said "I love you"'print(s)  # 输出:She said "I love you"

3.3.2 字符串的常用操作

字符串是不可变的(即不能直接修改字符串中的某个字符),但可以通过一些方法对字符串进行操作,常用操作如下:

  1. 字符串拼接:使用+号将两个或多个字符串拼接在一起。 s1 = "Hello" s2 = "Python" s3 = s1 + ", " + s2 # 拼接字符串 print(s3) # 输出:Hello, Python

  2. 字符串重复:使用*号将字符串重复指定次数。 s = "Python" print(s * 3) # 输出:PythonPythonPython

  3. 获取字符串长度:使用len()函数。 s = "Hello, Python" print(len(s)) # 输出:13(包含逗号和空格)

  4. 字符串切片:通过索引获取字符串中的部分内容,语法:字符串[起始索引:结束索引:步长](索引从0开始,结束索引不包含)。 s = "Python123" print(s[0]) # 输出:P(获取第0个字符) print(s[1:4]) # 输出:yth(获取索引1到3的字符,不包含4) print(s[::2]) # 输出:Pto13(步长为2,每隔一个字符取一次) print(s[::-1]) # 输出:321nohtyP(步长为-1,反转字符串)

  5. 常用字符串方法: s = "Hello, Python" print(s.lower()) # 输出:hello, python(全部转为小写) print(s.upper()) # 输出:HELLO, PYTHON(全部转为大写) print(s.strip()) # 输出:Hello, Python(去除字符串前后的空格,无空格则不变) print(s.split(","))# 输出:['Hello', ' Python'](按逗号分割字符串,返回列表) print(s.replace("Python", "World")) # 输出:Hello, World(替换字符串中的内容)

3.4 布尔值(bool)

布尔值只有两个取值:True(真)和False(假),主要用于判断条件(如if语句、循环语句),注意True和False的首字母必须大写,不能小写(如true、false是错误的)。

# 布尔值示例a = Trueb = Falseprint(type(a))  # 输出:<class 'bool'># 布尔值运算(后续章节详细讲解)print(a and b)  # 输出:False(逻辑与,两者都为真才为真)print(a or b)   # 输出:True(逻辑或,两者有一个为真就为真)print(not a)    # 输出:False(逻辑非,取反)# 注意:Python中,0、空字符串、空列表等会被判断为False,非0、非空会被判断为Trueprint(bool(0))     # 输出:Falseprint(bool(1))     # 输出:Trueprint(bool(""))    # 输出:Falseprint(bool("abc")) # 输出:True

3.5 数据类型转换

在实际编程中,经常需要将一种数据类型转换为另一种数据类型,Python提供了内置的转换函数,常用转换函数如下:

# 1. 转为整数(int())a = "123"       # 字符串类型b = int(a)      # 转为整数类型print(b, type(b))  # 输出:123 <class 'int'># 注意:只有能表示整数的字符串才能转为int,否则报错# print(int("123.45"))  # 报错:invalid literal for int() with base 10: '123.45'# 2. 转为浮点数(float())a = 123         # 整数类型b = float(a)    # 转为浮点数类型print(b, type(b))  # 输出:123.0 <class 'float'>c = "123.45"d = float(c)print(d, type(d))  # 输出:123.45 <class 'float'># 3. 转为字符串(str())a = 123b = str(a)print(b, type(b))  # 输出:123 <class 'str'>c = Trued = str(c)print(d, type(d))  # 输出:True <class 'str'># 4. 转为布尔值(bool())a = 0b = bool(a)print(b)  # 输出:Falsec = "abc"d = bool(c)print(d)  # 输出:True

第四章:Python运算符

运算符是用于对数据进行运算的符号,Python中的运算符主要分为:算术运算符、赋值运算符、比较运算符、逻辑运算符、成员运算符、身份运算符,下面逐一讲解。

4.1 算术运算符

算术运算符用于进行基本的数学运算(如加、减、乘、除),常用算术运算符如下表:

运算符

描述

示例

结果

+

加法

a = 10, b = 5, a + b

15

-

减法

a = 10, b = 5, a - b

5

*

乘法

a = 10, b = 5, a * b

50

/

除法(结果为浮点数)

a = 10, b = 5, a / b

2.0

//

整除(取整数部分,舍去小数)

a = 10, b = 3, a // b

3

%

取余(取除法后的余数)

a = 10, b = 3, a % b

1

**

幂运算(求a的b次方)

a = 2, b = 3, a ** b

8

# 算术运算符示例a = 10b = 3print(a + b)  # 输出:13print(a - b)  # 输出:7print(a * b)  # 输出:30print(a / b)  # 输出:3.3333333333333335print(a // b) # 输出:3print(a % b)  # 输出:1print(a ** b) # 输出:1000

4.2 赋值运算符

赋值运算符用于将右侧的值赋给左侧的变量,常用赋值运算符如下,其中+=、-=等是简化写法,等价于先运算再赋值。

运算符

描述

示例

等价于

=

基本赋值

a = 10

-

+=

加后赋值

a += 5

a = a + 5

-=

减后赋值

a -= 5

a = a - 5

*

乘后赋值

a *= 5

a = a * 5

/=

除后赋值

a /= 5

a = a / 5

//=

整除后赋值

a //= 5

a = a // 5

%=

取余后赋值

a %= 5

a = a % 5

**=

幂运算后赋值

a **= 5

a = a ** 5

# 赋值运算符示例a = 10a += 5  # 等价于a = a + 5print(a)  # 输出:15a -= 3  # 等价于a = a - 3print(a)  # 输出:12a *= 2  # 等价于a = a * 2print(a)  # 输出:24a //= 5  # 等价于a = a // 5print(a)  # 输出:4

4.3 比较运算符

比较运算符用于比较两个值的大小或是否相等,返回结果为布尔值(True或False),常用比较运算符如下:

运算符

描述

示例

结果

==

等于(判断两个值是否相等)

10 == 5

False

!=

不等于(判断两个值是否不相等)

10 != 5

True

>

大于

10 > 5

True

<

小于

10 < 5

False

>=

大于等于

10 >= 10

True

<=

小于等于

10 <= 5

False

# 比较运算符示例a = 10b = 5print(a == b)  # 输出:Falseprint(a != b)  # 输出:Trueprint(a > b)   # 输出:Trueprint(a < b)   # 输出:Falseprint(a >= 10) # 输出:Trueprint(b <= 4)  # 输出:False

4.4 逻辑运算符

逻辑运算符用于对布尔值进行逻辑运算,返回结果仍为布尔值,常用逻辑运算符有3个:and(逻辑与)、or(逻辑或)、not(逻辑非)。

运算符

描述

规则

示例

结果

and

逻辑与

两者都为True,结果才为True;否则为False

True and False

False

or

逻辑或

两者有一个为True,结果就为True;都为False才为False

True or False

True

not

逻辑非

取反,True变False,False变True

not True

False

# 逻辑运算符示例a = Trueb = Falseprint(a and b)  # 输出:Falseprint(a or b)   # 输出:Trueprint(not a)    # 输出:Falseprint(not b)    # 输出:True# 逻辑运算优先级:not > and > orprint(not a or b and a)  # 等价于 (not a) or (b and a),输出:False

4.5 成员运算符

成员运算符用于判断一个元素是否在某个序列(如字符串、列表)中,返回结果为布尔值,常用成员运算符:in(在...中)、not in(不在...中)。

# 成员运算符示例(字符串)s = "Python"print("P" in s)      # 输出:True("P"在字符串s中)print("p" in s)      # 输出:False(区分大小写)print("abc" not in s)# 输出:True("abc"不在字符串s中)# 成员运算符示例(列表,后续章节讲解列表)lst = [1, 2, 3, 4]print(2 in lst)      # 输出:Trueprint(5 not in lst)  # 输出:True

4.6 身份运算符

身份运算符用于判断两个变量是否指向同一个对象(即内存地址是否相同),常用身份运算符:is(是)、is not(不是)。

注意:is与==的区别:==判断两个变量的值是否相等,is判断两个变量的内存地址是否相同。

# 身份运算符示例a = 10b = 10print(a == b)  # 输出:True(值相等)print(a is b)  # 输出:True(内存地址相同,小整数会被缓存)c = [123]d = [123]print(c == d)  # 输出:True(值相等)print(c is d)  # 输出:False(内存地址不同,列表是可变对象)print(c is not d)  # 输出:True

第五章:Python流程控制

流程控制是指程序执行的顺序,Python中的流程控制主要分为三种:顺序结构、选择结构(if语句)、循环结构(for循环、while循环)。顺序结构是默认的执行顺序(从上到下依次执行),下面重点讲解选择结构和循环结构。

5.1 选择结构(if语句)

选择结构用于根据条件判断,执行不同的代码块,Python中的if语句有三种形式:if单分支、if-else双分支、if-elif-else多分支。

5.1.1 if单分支

语法:if 条件表达式: 缩进的代码块(条件为True时执行)

说明:条件表达式的结果为布尔值,若为True,执行缩进的代码块;若为False,跳过代码块,继续执行后续代码。

# if单分支示例age = 18if age >= 18:    print("你已成年,可以进入网吧。")  # 条件为True,执行该代码print("程序结束。")  # 无论条件是否成立,都会执行该代码

运行结果:你已成年,可以进入网吧。程序结束。

5.1.2 if-else双分支

语法:if 条件表达式: 缩进的代码块1(条件为True时执行) else: 缩进的代码块2(条件为False时执行)

说明:条件为True时执行代码块1,为False时执行代码块2,两者只能执行一个。

# if-else双分支示例age = 16if age >= 18:    print("你已成年,可以进入网吧。")else:    print("你未成年,禁止进入网吧。")print("程序结束。")

运行结果:你未成年,禁止进入网吧。程序结束。

5.1.3 if-elif-else多分支

语法:if 条件表达式1: 缩进的代码块1(条件1为True时执行) elif 条件表达式2: 缩进的代码块2(条件2为True时执行) ... else: 缩进的代码块n(所有条件都为False时执行)

说明:elif可以有多个,依次判断条件,只要有一个条件为True,执行对应的代码块,后续条件不再判断;若所有条件都为False,执行else后的代码块。

# if-elif-else多分支示例(成绩分级)score = 85if score >= 90:    print("优秀")elif score >= 80:    print("良好")elif score >= 60:    print("及格")else:    print("不及格")

运行结果:良好

5.2 循环结构

循环结构用于重复执行某段代码,Python中常用的循环有两种:for循环和while循环。

5.2.1 for循环

for循环主要用于遍历序列(如字符串、列表、元组),执行次数由序列的长度决定,语法:for 变量 in 序列: 缩进的代码块(每次遍历执行一次)

# 遍历字符串s = "Python"for char in s:    print(char)  # 依次输出字符串中的每个字符# 遍历列表(后续章节讲解)lst = [1, 2, 3, 4, 5]sum = 0for num in lst:    sum += num  # 累加列表中的所有元素print("列表元素的和:", sum)  # 输出:15# range()函数:生成一个整数序列,常用于for循环,语法:range(起始值, 结束值, 步长)(结束值不包含)for i in range(5):    print(i)  # 输出:0 1 2 3 4(默认起始值为0,步长为1for i in range(2102):    print(i)  # 输出:2 4 6 8(起始值2,结束值10,步长2

5.2.2 while循环

while循环用于根据条件重复执行代码块,只要条件为True,就会一直执行,语法:while 条件表达式: 缩进的代码块(条件为True时执行)

注意:使用while循环时,必须确保条件会在某个时刻变为False,否则会陷入无限循环(死循环)。

# while循环示例(计算1到10的和)sum = 0i = 1while i <= 10:    sum += i    i += 1  # 关键:修改变量i的值,使条件最终变为Falseprint("1到10的和:"sum)  # 输出:55# 无限循环示例(谨慎运行)# while True:#     print("无限循环")  # 会一直输出,需手动停止程序

5.2.3 循环控制语句(break、continue)

在循环中,可使用break和continue语句控制循环的执行流程:

  1. break:终止整个循环,跳出循环体,不再执行后续循环。 # break示例 for i in range(10):  if i == 5:  break # 当i=5时,终止循环  print(i) # 输出:0 1 2 3 4

  2. continue:跳过当前循环的剩余代码,直接进入下一次循环。 # continue示例 for i in range(10):  if i % 2 == 0:  continue # 跳过偶数,直接进入下一次循环  print(i) # 输出:1 3 5 7 9

5.2.4 循环嵌套

循环嵌套是指一个循环中包含另一个循环,外层循环执行一次,内层循环执行全部次数。

# 循环嵌套示例(打印99乘法表)for i in range(110):  # 外层循环:控制行数(1到9)    for j in range(1, i+1):  # 内层循环:控制每行的列数(1到当前行数)        print(f"{j}×{i}={i*j}", end="\t")  # end="\t"表示用制表符分隔,不换行    print()  # 每行结束后换行

运行结果:

1×1=1

1×2=2 2×2=4

1×3=3 2×3=6 3×3=9

...(依次类推,直到9×9=81)

第六章:Python函数基础

6.1 函数的定义与作用

在Python中,函数是一段封装好的、可重复使用的代码块,用于实现特定的功能。前面我们已经接触过一些Python内置函数,比如print()(输出)、len()(获取长度)、type()(查看数据类型)等,而本章我们将学习如何自定义函数,满足个性化的功能需求。

6.1.1 函数的作用

  • 代码复用:将常用的功能封装成函数,无需重复编写相同代码,提高开发效率。

  • 代码简洁:将复杂功能拆分成多个函数,使代码结构更清晰,便于阅读和维护。

  • 功能独立:每个函数实现一个特定功能,修改一个函数不会影响其他函数的正常运行(只要接口不变)。

6.1.2 函数的定义语法

Python中自定义函数的基本语法如下,严格遵循缩进规则(与条件、循环语句一致):

def 函数名(参数列表):    """函数文档字符串(可选,用于说明函数功能、参数、返回值等)"""    函数体(实现函数功能的代码块)    return 返回值(可选,用于返回函数执行结果)

语法说明:

  • def:定义函数的关键字,必须放在函数名前面。

  • 函数名:遵循变量命名规则(字母、数字、下划线组成,不能以数字开头,区分大小写,不使用内置关键字),建议简洁明了,体现函数功能(如add、calculate_area)。

  • 参数列表:用于接收外部传入的数据,可无参数、单个参数或多个参数,参数之间用逗号分隔。

  • 函数文档字符串:用三个单引号或三个双引号包裹,用于说明函数的功能、参数含义、返回值等,可通过help(函数名)查看,提高代码可读性。

  • 函数体:实现函数核心功能的代码块,必须缩进(推荐4个空格),与def关键字对齐。

  • return:用于返回函数的执行结果,可选;若没有return,函数默认返回None(表示空值)。

6.1.3 简单函数实例

# 示例1:无参数、无返回值的函数(实现简单打印功能)def print_welcome():    """打印欢迎语"""    print("欢迎学习Python函数基础!")# 调用函数(函数定义后,必须调用才能执行函数体)print_welcome()  # 输出:欢迎学习Python函数基础!# 示例2:有参数、有返回值的函数(实现两个数的加法)def add(a, b):    """计算两个数的和    参数:        a: 第一个整数        b: 第二个整数    返回值:两个数的和    """    result = a + b  # 函数体:计算两个数的和    return result  # 返回计算结果# 调用函数,接收返回值sum_result = add(35)print("3 + 5 =", sum_result)  # 输出:3 + 5 = 8# 直接调用函数并输出结果print("10 + 20 =", add(1020))  # 输出:10 + 20 = 30# 示例3:无参数、有返回值的函数(返回固定值)def get_python_version():    """返回当前Python推荐版本"""    return "Python 3.14.4"  # 结合Python官方最新版本(参考官方网站)print("推荐使用的Python版本:", get_python_version())  # 输出:推荐使用的Python版本:Python 3.14.4

6.2 函数的参数

函数的参数用于接收外部数据,根据传递方式的不同,可分为:位置参数、关键字参数、默认参数、可变参数。

6.2.1 位置参数

位置参数是最常用的参数类型,调用函数时,参数值的顺序必须与函数定义时的参数顺序一致,个数也必须相同。

# 定义一个计算长方形面积的函数(位置参数:长、宽)def calculate_rect_area(length, width):    """计算长方形面积    参数:        length: 长方形的长(位置参数)        width: 长方形的宽(位置参数)    返回值:长方形的面积    """    area = length * width    return area# 正确调用:按照参数顺序传入,数量一致print("长方形面积:", calculate_rect_area(53))  # 输出:长方形面积:15# 错误调用1:参数数量不足(缺少width)# print(calculate_rect_area(5))  # 报错:missing 1 required positional argument: 'width'# 错误调用2:参数顺序错误(长和宽颠倒,结果错误但不报错)print("顺序错误的面积:", calculate_rect_area(35))  # 输出:顺序错误的面积:15(巧合正确,实际逻辑错误)

6.2.2 关键字参数

关键字参数是调用函数时,通过“参数名=值”的方式传入,无需遵循参数顺序,可提高代码可读性,避免因参数顺序错误导致的问题。

# 沿用上面计算长方形面积的函数def calculate_rect_area(length, width):    area = length * width    return area# 关键字参数调用(无需遵循顺序)print("长方形面积:", calculate_rect_area(length=5, width=3))  # 输出:15print("长方形面积:", calculate_rect_area(width=3length=5))  # 输出:15(顺序颠倒,结果正确)# 混合调用:位置参数在前,关键字参数在后(必须遵循此规则)print("混合调用面积:", calculate_rect_area(5, width=3))  # 输出:15# 错误混合调用:关键字参数在前,位置参数在后# print(calculate_rect_area(length=5, 3))  # 报错:positional argument follows keyword argument

6.2.3 默认参数(可选参数)

默认参数是函数定义时,给参数指定一个默认值,调用函数时,若不传入该参数,则使用默认值;若传入,则使用传入的值。默认参数必须放在位置参数的后面,否则会报错。

# 定义一个计算圆形面积的函数(默认参数:圆周率pi=3.14)def calculate_circle_area(radius, pi=3.14):    """计算圆形面积    参数:        radius: 圆的半径(位置参数,必传)        pi: 圆周率(默认参数,默认值3.14,可选传)    返回值:圆形的面积    """    area = pi * radius ** 2  # 用到前面学的幂运算符    return area# 调用1:不传入默认参数,使用默认值3.14print("圆形面积(默认pi):", calculate_circle_area(5))  # 输出:78.5# 调用2:传入默认参数,覆盖默认值print("圆形面积(自定义pi):", calculate_circle_area(5, pi=3.1415926))  # 输出:78.539815# 错误定义:默认参数放在位置参数前面# def calculate_circle_area(pi=3.14, radius):  # 报错:non-default argument follows default argument

6.2.4 不定长参数

当不确定需要传入多少个参数时,可使用不定长参数,Python中不定长参数主要有两种:*args 和 **kwargs。

  1. *args:接收任意数量的位置参数,将其打包成一个元组(后续第七章讲解),参数名args可自定义,但约定俗成用args。 # 定义一个计算多个数之和的函数(不定长参数*args) def add_many(*args):  """计算任意多个数的和  参数:  *args: 任意数量的位置参数(打包成元组)  返回值:所有数的和  """  sum_result = 0  for num in args: # 遍历元组中的每个元素  sum_result += num  return sum_result # 调用函数,传入不同数量的参数 print("1+2 =", add_many(1, 2)) # 输出:1+2 = 3 print("1+2+3+4 =", add_many(1, 2, 3, 4)) # 输出:1+2+3+4 = 10 print("无参数求和:", add_many()) # 输出:无参数求和:0(args为空元组)

  2. **kwargs:接收任意数量的关键字参数,将其打包成一个字典(后续第七章讲解),参数名kwargs可自定义,约定俗成用kwargs。 # 定义一个打印用户信息的函数(不定长关键字参数**kwargs) def print_user_info(**kwargs):  """打印用户信息  参数:  **kwargs: 任意数量的关键字参数(打包成字典)  """  for key, value in kwargs.items():  print(f"{key}: {value}") # 调用函数,传入不同数量的关键字参数 print_user_info(name="张三", age=18, height=1.75) # 输出: # name: 张三 # age: 18 # height: 1.75 print_user_info(username="python123", password="123456") # 输出: # username: python123 # password: 123456

注意:*args 和 **kwargs 可同时使用,且*args必须放在**kwargs前面。

# 同时使用*args和**kwargsdef mixed_args(*args, **kwargs):    print("位置参数打包:", args)    print("关键字参数打包:", kwargs)mixed_args(123, name="张三", age=18)# 输出:# 位置参数打包: (1, 2, 3)# 关键字参数打包: {'name': '张三', 'age': 18}

6.3 函数的返回值

函数的返回值是函数执行完成后,向外部传递的结果,通过return语句实现,return语句有以下几个特点:

  • return语句可以返回任意类型的数据(整数、浮点数、字符串、布尔值等),也可以返回多个值(用逗号分隔,默认打包成元组)。

  • return语句执行后,函数会立即终止,后续的代码不会执行。

  • 若函数中没有return语句,默认返回None(None是Python中的空值类型,可用于表示“无结果”)。

6.3.1 单个返回值

# 定义一个判断一个数是否为偶数的函数(返回布尔值)def is_even(num):    """判断一个数是否为偶数    参数:num: 待判断的整数    返回值:True(偶数)、False(奇数)    """    if num % 2 == 0:        return True  # 满足条件,返回True,函数终止    return False  # 不满足条件,返回Falseprint(is_even(4))  # 输出:Trueprint(is_even(5))  # 输出:False

6.3.2 多个返回值

# 定义一个函数,返回两个数的和与差def add_and_subtract(a, b):    sum_ab = a + b    sub_ab = a - b    return sum_ab, sub_ab  # 多个返回值,默认打包成元组# 接收多个返回值(两种方式)# 方式1:用一个变量接收(得到元组)result = add_and_subtract(103)print("和与差:", result)  # 输出:和与差: (137)print("和:", result[0], "差:", result[1])  # 输出:和: 13 差: 7# 方式2:用多个变量接收(变量数量与返回值数量一致)sum_ab, sub_ab = add_and_subtract(103)print("和:", sum_ab, "差:", sub_ab)  # 输出:和: 13 差: 7

6.3.3 return与None

# 无return语句的函数,默认返回Nonedef print_hello():    print("Hello")result = print_hello()print("函数返回值:", result)  # 输出:Hello  函数返回值: None# 有return但无具体值,也返回Nonedef empty_return():    print("有return但无返回值")    return  # 等价于return Noneresult = empty_return()print("函数返回值:", result)  # 输出:有return但无返回值  函数返回值: None

6.4 函数的调用与嵌套

6.4.1 函数的调用

函数定义完成后,必须通过“函数名(参数列表)”的方式调用,才能执行函数体并获取返回值。函数调用的方式主要有以下几种:

  1. 直接调用:仅执行函数功能,不接收返回值(适合无返回值或无需使用返回值的函数)。 def print_welcome():  print("欢迎!") print_welcome() # 直接调用,执行打印功能

  2. 赋值调用:将函数返回值赋值给变量,后续可使用该变量。 def add(a, b):  return a + b sum_result = add(3, 5) # 赋值调用,接收返回值 print(sum_result) # 使用返回值

  3. 嵌套调用:在一个函数的函数体中,调用另一个函数,实现更复杂的功能。 # 定义函数1:计算两个数的和 def add(a, b):  return a + b # 定义函数2:计算三个数的和(嵌套调用add函数) def add_three(a, b, c):  # 先计算a和b的和,再加上c  return add(add(a, b), c) print(add_three(1, 2, 3)) # 输出:6(1+2=3,3+3=6)

6.4.2 函数的嵌套定义

除了嵌套调用,Python还支持在一个函数内部定义另一个函数(内部函数),内部函数只能在外部函数的函数体中使用,外部无法直接调用,这种方式可以实现功能的封装和隐藏。

# 外部函数:计算长方形的周长和面积def rectangle_calc(length, width):    # 内部函数:计算周长    def calculate_perimeter():        return 2 * (length + width)  # 可直接使用外部函数的参数    # 内部函数:计算面积    def calculate_area():        return length * width    # 外部函数返回内部函数的结果    perimeter = calculate_perimeter()    area = calculate_area()    return perimeter, area# 调用外部函数,获取周长和面积perimeter, area = rectangle_calc(53)print("长方形周长:", perimeter)  # 输出:16print("长方形面积:", area)      # 输出:15# 错误:外部无法直接调用内部函数# calculate_perimeter()  # 报错:name 'calculate_perimeter' is not defined

6.5 函数的应用实例

结合前面所学的知识点(变量、运算符、条件语句、循环语句),编写几个实用的函数实例,帮助大家巩固函数的使用。

实例1:判断一个数是否为质数

def is_prime(num):    """判断一个正整数是否为质数    质数:大于1的整数,除了1和它本身,不能被其他数整除    参数:num: 待判断的正整数    返回值:True(质数)、False(非质数)    """    if num <= 1:        return False  # 小于等于1的数不是质数    if num == 2:        return True   # 2是最小的质数    # 判断2到num-1之间是否有能整除num的数    for i in range(2, num):        if num % i == 0:            return False  # 能被整除,不是质数    return True  # 不能被任何数整除,是质数# 调用函数,测试结果print(is_prime(7))   # 输出:True(质数)print(is_prime(10))  # 输出:False(非质数)print(is_prime(2))   # 输出:True(质数)print(is_prime(1))   # 输出:False(非质数)

实例2:计算斐波那契数列的第n项

斐波那契数列:1, 1, 2, 3, 5, 8, 13... 从第3项开始,每一项等于前两项之和。

def fibonacci(n):    """计算斐波那契数列的第n项    参数:n: 正整数(第n项)    返回值:第n项的数值    """    if n <= 0:        return "n必须是正整数"  # 异常处理,返回提示信息    if n == 1 or n == 2:        return 1  # 前两项都是1    # 从第3项开始计算    a, b = 11  # a表示第n-2项,b表示第n-1项    for i in range(3, n+1):        c = a + b  # 第n项 = 第n-2项 + 第n-1项        a = b      # 更新a为第n-1项        b = c      # 更新b为第n项    return b# 调用函数,测试结果print("斐波那契数列第5项:", fibonacci(5))  # 输出:5print("斐波那契数列第10项:", fibonacci(10))  # 输出:55print("斐波那契数列第0项:", fibonacci(0))  # 输出:n必须是正整数

实例3:封装函数,实现用户登录验证

def login(username, password):    """用户登录验证    参数:        username: 用户名        password: 密码    返回值:登录成功(True)、登录失败(False)及提示信息    """    # 模拟正确的用户名和密码(实际开发中会从数据库获取)    correct_username = "admin"    correct_password = "123456"    if username == correct_username and password == correct_password:        return True"登录成功!欢迎您,管理员!"    elif username != correct_username:        return False"登录失败:用户名错误!"    else:        return False"登录失败:密码错误!"# 调用函数,模拟登录success, message = login("admin""123456")print(message)  # 输出:登录成功!欢迎您,管理员!success, message = login("user""123456")print(message)  # 输出:登录失败:用户名错误!success, message = login("admin""654321")print(message)  # 输出:登录失败:密码错误!

6.6 注意事项

  • 函数名不能与Python内置函数重名(如不能定义名为print、len、type的函数),否则会覆盖内置函数,导致内置函数无法正常使用。

  • 参数的顺序:位置参数在前,默认参数、不定长参数在后,*args在前,**kwargs在后。

  • 函数体必须缩进,否则会报错,推荐使用4个空格缩进,与def关键字对齐。

  • return语句执行后,函数会立即终止,后续的代码不会执行,编写函数时需注意逻辑顺序。

  • 内部函数只能在外部函数内部使用,外部无法直接调用,若需使用,可通过外部函数返回内部函数实现。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 09:37:20 HTTP/2.0 GET : https://f.mffb.com.cn/a/487718.html
  2. 运行时间 : 0.380580s [ 吞吐率:2.63req/s ] 内存消耗:5,109.55kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=fafb4237e2a354b8f3713e2b477aac13
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000419s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000511s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.008883s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.006514s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000698s ]
  6. SELECT * FROM `set` [ RunTime:0.010111s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000707s ]
  8. SELECT * FROM `article` WHERE `id` = 487718 LIMIT 1 [ RunTime:0.003543s ]
  9. UPDATE `article` SET `lasttime` = 1783129041 WHERE `id` = 487718 [ RunTime:0.003371s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.005904s ]
  11. SELECT * FROM `article` WHERE `id` < 487718 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.029188s ]
  12. SELECT * FROM `article` WHERE `id` > 487718 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.049386s ]
  13. SELECT * FROM `article` WHERE `id` < 487718 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.037914s ]
  14. SELECT * FROM `article` WHERE `id` < 487718 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.077956s ]
  15. SELECT * FROM `article` WHERE `id` < 487718 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.062521s ]
0.382195s