函数基础
一:为什么要有函数?没有函数带来的困扰
1、组织结构不清晰,可读性差
2、遇到重复的功能只能重复编写实现代码,代码冗余差
3、功能需要扩展是,需要找出所有的实现该功能的代码修改,无法统一管理,维护难度大
二:什么是函数
针对二中的问题,想象生活中的例子,修理工需要实现准备好工具箱里面放好锤子,扳手,钳子等工具,然后遇到锤钉子的场景,拿来锤子用就可以,而无需临时再制造一把锤子。 修理工===>程序员 具备某一功能的工具===>函数
事先具备工具===> 函数的定义
拿来就用、重复使用===> 函数的调用
#要想使用工具,需要事先准备好,然后拿来就用且可以重复使用
#要想用函数,需要先定义,再调用
三:函数的分类
#1.内置函数:len,max(10,11)
为了方便我们的开发,针对一些简单的功能,python解释器已经为我们定义好了的函数即内置函数。对于内置函数,我们可以拿来就用而无需事先定义,如len(),sum(),max()
ps:我们将会在最后详细介绍常用的内置函数。
#2、自定义函数 很明显内置函数所能提供的功能是有限的,这就需要我们自己根据需求,事先定制好我们自己的函数来实现某种功能,以后,在遇到应用场景时,调用自定义的函数即可。例如
四:自定义函数
语法:
def 函数名(参数1,参数2):
'''函数文档 描述信息 '''
函数体
return 返回值
# 函数文档可有可不有,建议每次都写上,养成一个良好的习惯。
#函数体 必须有
#return 返回值
#定义一个函数,有一个函数名,其实跟定义一个变量没有什么区别,都是申明了一个名字,名字的作用绑定一个值,通过名字来引用
#先定义
def my_function1():
'''这是我第一个函数'''
print('my first funciton')
#方法一:通过python
print(my_function1.__doc__)
#方法二:通过help() 帮助函数来查看
help(my_function1)
#自定义第一个函数与调用
#函数的使用方法: 先定义,后调用
def my_function1(): '''这是我第一个函数''' print('my first funciton')
#调用函数 函数名加(括号)
my_function1()
#返回结果
#my first funciton
#调用函数
调用函数分为两步:第一步通过名字找到一个函数内存地址,找到的话是一个函数的话价格(括号)就可以执行,如果没有找到则报错
#写一个用户认证功能
def auth(): '''登录认证函数''' name = input('user>>:').strip() password = input('password>>:').strip() if name == 'user' and password == '123': print('login successfull') else: print('user or password err') auth()
五 函数使用的原则要遵循:先定义,再调用--重点
函数即“变量”,“变量”必须先定义后引用。未定义而直接引用函数,就相当于在引用一个不存在的变量名 #这里的函数既变量是方便理解,只是和变量比较相似 #测试一 def foo(): print('from foo') bar() foo() #报错 #测试二 def bar(): print('from bar') def foo(): print('from foo') bar() foo() #正常 #测试三 def foo(): print('from foo') bar() def bar(): print('from bar') foo() #会报错吗? #结论:函数的使用,必须遵循原则:先定义,后调用 #我们在使用函数时,一定要明确地区分定义阶段和调用阶段 #定义阶段 def foo(): print('from foo') bar() def bar(): print('from bar') #调用阶段 foo()
#定义函数阶段都发生了什么事
#只检测语法,不执行代码
也就是说,定义阶段只检查函数体的语法错误,而代码的逻辑错误只有在执行的时候才会知道。
#调用函数
函数的调用:函数名加括号 1 先找到名字 2 根据名字调用代码
五: 定义一个函数的三种形式
1.无参数 #函数体不需要外界传入值,就是无参数
2.有参数
3.空函数
有参数
#定义阶段有参数,就必须调用参数的传入参数
def my_mymax(x,y): if x > y: print(x) else: print(y) my_mymax(1,2)
空函数
#作用: 比如我们要写一个FTP 工具,上传 下载的功能
#把一个程序的组织结构很清晰,然后开始写相应的功能
def auth():
'''认证功能'''
pass
def put():
'''上传功能'''
pass
'''下载功能'''
def get():
pass
def ls():
'''浏览功能'''
pass