一、函数快速入门
1、函数概述
- 函数是组织好的,可重复使用的,用来实现特定功能的代码段
name = "Hello World"
name_length = len(name)
print(f"{name} 的长度为 {name_length}") # Hello World 的长度为 11
-
len() 是Python 内置的函数,是提前写好的,可以重复使用,实现统计长度这一特定功能的代码段
-
目前使用过的 input()、print()、str()、int() 等都是Python的内置函数
2、函数初体验
- 不使用内置函数 len(),完成字符串长度的计算
def get_length(data):
data_length = 0
for x in data:
data_length += 1
print(f"{data} 的长度为 {data_length}")
str1 = "Hello World"
str2 = "Thanks Smith"
get_length(str1)
get_length(str2)
- 输出结果
Hello World 的长度为 11
Thanks Smith 的长度为 12
二、函数的定义
1、基本格式
- 函数的定义
def 【函数名】(【传入参数】):
【函数体】
return 【返回值】
- 函数的调用
【函数名】(【参数】)
2、注意事项
-
注意冒号(:)和空格缩进
-
参数如不需要,可以省略
-
返回值如不需要,可以省略
-
函数必须先定义后使用
3、基本使用
# 定义一个函数,输出相关信息
def say_hi():
print("Hello World, Hello Python")
# 调用函数,让定义的函数开始工作
say_hi()
- 输出结果
Hello World, Hello Python
三、函数的传入参数
1、基本介绍
- 传入参数的功能是在函数进行计算的时候,接受外部(调用时)提供的数据
2、基本使用
def add(num1, num2, num3):
result = num1 + num2 + num3
print(f"{num1} + {num2} + {num3} 的结果是 {result}")
add(1, 2, 3)
add(4, 5, 6)
- 输出结果
1 + 2 + 3 的结果是 6
4 + 5 + 6 的结果是 15
3、使用解析
-
函数定义中,提供的 num1、num2、num3 被称之为形式参数(形参),表示函数声明将要使用 3 个参数,参数之间使用逗号进行分隔
-
函数调用中,提供的参数被称之为实际参数(实参),表示函数执行时真正使用的参数值,传入的时候,按照顺序传入参数,使用逗号分隔
-
形参的数量是不受限制的,可以不使用形参,也可以使用任意 N 个形参
四、函数的返回值
1、基本格式
- 函数定义
def 【函数名】(【传入参数】):
【函数体】
return 【返回值】
- 函数调用
【变量名】 = 【函数名】(【实参】)
-
通过 return 关键字,就能向调用者返回数据,变量就能接收到函数的返回值
-
注:函数体在遇到 return 关键字后就结束了,所以写在 return 关键字后的代码不会执行
2、基本使用
- 定义一个函数,完成两数相加的功能,并返回结果
def add(num1, num2):
result = num1 + num2
return result
print(add(10, 20))
print(add(30, 40))
print(add(50, 60))
- 输出结果
30
70
110
五、None 类型
1、基本介绍
-
如果函数没有使用 return 语句返回数据,那么函数还是有返回值的
-
Python 中有一个特殊的字面量 None,其类型是 <class ‘NoneType’>,无返回值的函数,实际上就是返回了 None 这个字面量
-
None 表示空的、无实际意义的意思,函数返回 None 就表示这个函数没有返回什么有意义的内容,也就是返回了空的意思
2、基本使用
def say_hi():
print("Hello World, Hello Python")
result = say_hi()
print(f"无返回值函数,返回的结果是:{result}")
print(f"无返回值函数,返回的结果类型是:{type(result)}")
- 输出结果
Hello World, Hello Python
无返回值函数,返回的结果是:None
无返回值函数,返回的结果类型是:<class 'NoneType'>
3、使用场景
-
用在函数无返回值上
-
用在 if 判断上,在 if 判断中,None 等同于 False,一般用于函数中主动返回 None,配合 if 判断做相关处理
-
用在声明无内容的变量上,定义变量,但暂时不需要变量有具体值,可以用 None 来代替,如 name = None
4、实际应用
def check_age(age):
if age >= 18:
return "SUCCESS"
else:
return None
age = 10
print(f"我今年 {age} 岁")
result = check_age(age)
if result:
print("我今年已成年")
else:
print("我今年未成年")
- 输出结果
我今年 10 岁
我今年未成年
六、函数说明文档
1、基本格式
-
可以给函数添加说明文档,辅助理解函数的作用
-
通过多行注释的形式,对函数进行说明解释(内容应写在函数体之前)
def 【函数名】(【形参 1】, 【形参 2】):
"""
【函数说明】
:param 【形参 1】: 【形参 1 的说明】
:param 【形参 2】: 【形参 2 的说明】
:return: 【返回值的说明】
"""
【函数体】
return 【返回值】
2、基本使用
def add(num1, num2):
"""
两数相加
:param num1: 相加的数字 1
:param num2: 相加的数字 2
:return: 返回相加的结果
"""
result = num1 + num2
return result
3、查看说明文档
- 在 PyCharm 中编写代码时,可以通过鼠标悬停在函数名上,查看调用函数的说明文档
七、变量的作用域
1、局部变量
(1)基本介绍
-
局部变量是定义在函数体内部的变量,即只在函数体内部生效
-
局部变量作用是在函数体内部临时保存数据,即当函数调用完成后,则销毁局部变量
(2)演示
def test():
# 定义局部变量
num = 100
print(num)
print(num)
- 变量 num 是定义在 test 函数内部的变量,在函数外部访问则立即报错
2、全局变量
(1)基本介绍
- 全局变量是在函数体内、外都能生效的变量
(2)演示
# 定义全局变量
num = 100
def testA():
print(num)
def testB():
print(num)
testA()
testB()
- 输出结果
100
100
3、global 关键字
(1)基本介绍
- 使用 global关键字,可以在函数内部声明变量为全局变量
(2)基本使用
num1 = 100
def testA():
print(num1)
def testB():
# global 关键字声明 num1 是全局变量
global num1
num1 = 200
# global 关键字声明 num2 是全局变量
global num2
num2 = 300
print(num2)
testA()
testB()
print(f"全局变量 num1 值为 {num1}")
print(f"全局变量 num2 值为 {num2}")
- 输出结果
100
300
全局变量 num1 值为 200
全局变量 num2 值为 300