- print() 在控制台输出
- input() 获取控制台输⼊的内容
- type() 获取变量的数据类型
- len() 获取容器的⻓度 (元素的个数)
- range() ⽣成⼀个序列[0, n)
以上都是我们学过的函数,函数可以实现⼀个特定的功能。我们将学习⾃⼰如何定义函数, 实现特定的功能。
1.函数是什么?
- 函数:将多⾏代码(可以实现⼀个特定的功能)放在⼀块,并给它起⼀个名字。在需要使多⾏代码的时候, 可以使⽤名字代替。
- 定义函数的好处:对具备相同逻辑的代码进行封装,实现对代码的重用,减少代码冗余(重复的代码不需要多次书写),提⾼编程效率。
- 函数必须 先定义 后 调用
2.函数的文档注释[了解]
- 函数的⽂档注释,本质就是注释, 只不过作⽤和书写位置有特定的要求
- 作⽤: 是对函数的作用和使用方法进行说明, ⽐如 有哪些参数, 返回值是什么
- 书写位置: 在def 的下方,使⽤三对双引号来书写
函数的查看:
- 在函数名上,使⽤快捷键 Ctrl q 查看
- 在函数名上,使⽤ 快捷键 Ctrl B 跳转到函数定义的地⽅查看
- 在函数名上, 按住 Ctrl 键,点击函数名,跳转到函数定义的地⽅查看
3.函数的定义
def 函数名():函数中的代码函数中的代码
- 函数定义,就是给多行代码起名字的过程
- 函数的定义需要使⽤ 关键字 def, 单词 define
- 处在 def 缩进中的代码 都属于这个函数
- 函数名要满⾜标识符的规则, ⻅名知意
- def 这⾏代码的最后需要⼀个 冒号
- 函数定义不会执⾏函数中的代码,想要执⾏需要调⽤这个函数
4.定义带参数的函数
- 参数
- 形式参数(形参):在函数定义的时候,在括号中写⼊变量,这个变量就称为是函数的参数。
- 实际参数(实参):在函数调⽤的时候,可以给定义时候的形参传递具体的数据值,供其使⽤。
- 注: 在函数调⽤的时候,会将函数的实参值传递给形参。
- 好处: 可以让函数更加的通⽤,函数中的数据值不是固定的,是调⽤的时候,你传递的。
- 使用场景: 判断 函数中 数据值是不是固定不变的, 如果是变化的,就可以使⽤参数传递。
- 注意点: ⽬前书写的函数, 如果存在形参,必须传递相同个数的实参。
def sun_2_num(a, b): # a, b 形参
c = a + b
print(c)
sun_2_num(10, 20) # 10, 20 实参 10 给 a, 20 给 b
sun_2_num(1, 2)
sun_2_num(20, 39)
5.函数的调用
语法:函数名()
注意:有参数则需要传递参数
- 函数调用,就是使用 多行代码的过程
- 只定义函数, 不调用函数, 函数永远不会被执行
- 不能将 函数调用 放在 函数定义 的上方,否则将会出现错误。(先定义再调用)
# 定义带参数的函数
def sun_2_num(a, b): # a, b 形参
c = a + b
print(c)
# 调用带参数的函数
sun_2_num(10, 20) # 10, 20 实参 10 给 a, 20 给 b
sun_2_num(1, 2)
sun_2_num(20, 39)
定义函数的小技巧:
- 先不使⽤函数,将多⾏代码写完
- 在多行代码的上⽅使⽤ def 起名字
- 使⽤ tab 键, 将多⾏代码进行缩进
6.函数嵌套调用
- 在⼀个函数中调⽤另⼀个函数。
1, 代码从上到下执⾏的
2, 函数定义不会执⾏函数中的代码
3, 函数调用会进⼊函数中执⾏函数中的代码
4, 函数中的代码执行结束,会回到调⽤的地⽅继续向下执⾏
# 1. 定义名为test01的函数,打印当前函数的名称
def test01():
print(1)
print('func01')
print(2)
# 2. 定义名为test02的函数,打印当前函数的名称,并 调用test01函数
def test02():
print(3)
print('func2')
test01()
print(4)
print(5)
test02()
print(6)
# 5 3 1 2 4 6
7.返回值
- 返回值: 函数执⾏的结果
- print() ---> None
- input() ---> 键盘输⼊的内容, 类型 字符串
- type() ---> 变量的数据类型
- len() ---> 容器⻓度
- 在⼀个函数中,想要返回⼀个数据(想要有返回值),需要使用return 关键字。
- 为什么返回值? 在函数中可能通过各种代码得到的数据结果,想要在函数外部使用就需要使⽤返回值。
- 如果函数有返回值, ⼀般在调⽤的时候 会使⽤变量来接收(保存) 返回值, 以便后续使用。
- return 关键字的作用:
- 将⼀个数据值返回到调用的地⽅
- 函数遇到 return 会结束函数的执行
- return 关键字只能⽤在函数中
- 如果⼀个函数 没有写 return,可以认为 返回值是 None。
- 返回一个值
- 返回多个值(函数中如果想要返回多个数据值, 一般是组成元组进行返回)
(1) return返回单个数据值
# 设计⼀个函数⽤于获取两个数中的较⼤数,数据来⾃于函数的参数
def get_max(a, b):
if a > b:
return a
else:
return b
print('我会执⾏吗, 不会执⾏') # 注意:return 表示返回,后续的代码都不会被执行
# 调用
num = get_max(10, 20)
print(num)
(2)return返回多个数据值
def calc(a, b):
"""返回两个数的和及差"""
return a + b, a - b
result = calc(10, 20)
print(result)
(3)案例:
需求:
1. 定义名为 input_username 的函数, 获取⽤户输⼊的⽤户名
2. 定义名为 input_password 的函数, 获取⽤户输⼊的密码
3. 定义名为 login 的函数, 判断获取的⽤户名和密码信息
4. 要求当获取的⽤户名为:admin 并且密码为: 123456 时, 输出“登录成功!”,否则提示“⽤户 名或 密码错误!”
# 1. 定义名为 input_username 的函数, 获取⽤户输⼊的⽤户名
def input_username():
"""输⼊⽤户名"""
return input('请输入用户名:')
# 2. 定义名为 input_password 的函数, 获取⽤户输⼊的密码
def input_password():
"""输⼊密码"""
return input('请输入密码:')
# 3. 定义名为 login 的函数, 判断获取的用户名和密码信息
# 4. 要求当获取的用户名为:admin 并且密码为: 123456 时,输出“登录成功!”,否则提示“用户名或密码错误!”
def login():
"""登录函数"""
if input_username() == 'admin' and input_password() == '123456':
print('登录成功')
else:
print('用户名或密码错误')
login()
未完待续。。。