函数基础

一:为什么要有函数?没有函数带来的困扰   

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

 

posted @ 2017-12-18 17:55  Egrep  阅读(130)  评论(0编辑  收藏  举报