一. 前言
嗨喽~大家好呀,这里是魔王呐 ❤ ~!
python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取
二. 什么是函数?
假设你现在是一个工人,如果你实现就准备好了工具,等你接收到任务的时候,
直接带上工具就可以工作了,而不是临时去制作。
在程序中,函数就是具备某一功能的工具,实现将工具准备好就是函数的定义,
遇到应用场景将工具拿来用,就是函数的调用。
三. 为什么要使用函数
如果不使用函数,写程序时会遇到这三个问题:
-
程序冗长,组织结构不清晰,可读性差
-
程序的扩展性差
-
程序的可维护性差
四. 如何用函数
函数的使用遵循一个原则:先定义函数,然后调用它
定义函数
def 函数名(param1、param2……):"""函数功能的描述信息:param1:描述参数:param2:描述参数:return:返回值"""code 1code 2code 3...return 返回值
调用函数
函数名(param1、param2……)
1 登录注册功能的函数
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 注册功能函数
def register():"""注册功能"""username = input('username: ').strip()pwd = input('password: ').strip()with open('user.txt', 'a', encoding='utf8') as fa:fa.write(f"{username}:{pwd}\n")fa.flush()
register()# 登录功能函数
def login():"""登录功能"""inp_username = input('username: ').strip()inp_pwd = input('password: ').strip()with open('user.txt', 'rt', encoding='utf8') as fr:for user_info in fr:user_info = user_info.strip('\n')user_info_list = user_info.split(':')if inp_username == user_info_list[0] and inp_pwd == user_info_list[1]:print('login successful')breakelse:print('failed')
login()
2 函数的定义阶段
def func():bar() # 不属于语法错误,不会报错print('*'*10)
在函数的定义阶:
-
申请内存空间保存函数体代码
-
将函数体绑定给函数名
-
定义阶段不会执行函数体代码,但是会检测函数体的语法
3 函数的调用阶段
def bar():print('from bar')def foo():print('from foo')bar()foo()
'''
from foo
from bar
'''
def foo():print('from foo')bar()def bar():print('from bar')foo()
'''rom foo
from bar
'''
函数调用阶段:
-
通过函数名找到函数的内存地址
-
然后加括号就是在出发函数体代码并执行
五. 定义函数的三种形式
1 无参函数
定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名
在函数定义阶段,括号内没有参数,称为无参函数。需要注意的是:定义的时候是无参函数,调用的时候也不用传入参数。
如果函数体代码逻辑不需要依赖外部传入的值,则必须定义成无参函数。
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def func():print('hello lwx')func()# hello lwx
2 有参函数
在函数定义阶段,括号内有参数,称为有参函数。需要注意的是,定义时有参数,调用的时候也必须传入参数。
如果函数体代码逻辑需要依赖外部传入的值,那么必须定义成有参函数。
def sum_self(x,y):res = x+yprint(res)sum_self(520,1314)# 1834
3 空函数
当你只知道你需要。实现的某个功能,但是不知道如何使用代码实现时,你可以暂时写一个空函数,也就是函数体没有代码,但是我们函数不可以没有函数题,所以就用pass代替,跳过这个函数,先去实现其他的功能。
def func():pass
4 三种定义方式应用场景
无参函数应用场景
用于无需外部传值的场景:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def add():x= float(input('num_x:'))y= float(input('num_y:'))res = x+yprint(res)
add()
add()# num_x:10
# num_y:10
# 20.0
# num_x:10
# num_y:20
# 30.0
有参函数应用场景
用于需要接收外部传入值的场景
def add(x,y):res = x+yprint(res)
add(10,20)
add(10,30)# 30
# 40
空函数应用场景
先进性构思,列出程序的骨架,然后补全
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def login():passdef shopping():passdef exit():pass
六. 调用函数
1 什么是函数调用
函数名()就是函数的调用,会执行函数体代码,直到遇到return或执行完函数体内所有代码才结束
函数运行完毕所有代码, 如果函数体不写return,则会返回Nore
函数名()就是函数的调用,会执行函数体代码,直到遇到return或执行完函数体内所有代码才结束
函数运行完毕所有代码, 如果函数体不写return,则会返回Nore
def a():passprint(a())# None
2 为什么用函数调用?
方便实用函数的功能,也可以当做参数使用4
3 函数调用的三种形式
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def max_self(x,y):if x > y:return xelse:return y
#第一种
max_self(1,2)
#第二种
res = max_self(1,2)*12
#第三种
max_self(max_self(20000,30000),40000)
七. 函数的返回值
return是函数结束的标志,即函数体一旦遇到return会立刻终止函数的运行并且会将return后面的值当做本次运行的结果返回
1 返回值为none:函数体没有返回值
def func():return#return none
2 返回一个值:return 值
def func():return 0
3 返回多个值
用逗号隔开多个值,会被return返回为元组的形式
def func():return 10,'a',[1,2,3]
res = func()
print(res,type(res))
# (10, 'a', [1, 2, 3]) <class 'tuple'>
尾语
最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬
希望本篇文章有对你带来帮助 🎉,有学习到一点知识~
躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。