1、为什么要有函数?什么是函数?
用来解决:
1)、组织结构不清晰,可读性差
2)、代码冗余,有许多需要重复使用的代码。
3)、管理维护程序与程序的扩展型。
具备某一个功能的工具就是程序的中函数
事先准备工具的过程就是函数的定义
拿来就用就是在函数的调用。
牢记!!!!
所以函数的使用必须遵循:先定义,再调用!!!!!
#定义函数:
'''
1、语法
def 函数名(参数1,参数2,...):
"""
文档描述
"""
代码1
代码2
代码3
return 值
def:定义函数的关键字
函数名:是用来调用函数的,
函数名的命名必须能反映出函数的功能
文档描述:推荐写上,来增强函数的可读性
代码块:函数的功能实现代码
return:函数的返回值
'''
#1.1 定义阶段
# def print_sym(sym,count): # print_sym=<function print_msg at 0x000001B2A33698C8>
# print(sym*count)
#
# def print_msg(msg):
# print(' 33[045m%s 33[0m' %msg)
#1.2 调用阶段:函数名加括号就是在调用函数
# print(print_sym)
# print_sym('#',30)
# print_msg('hello egon')
# print_sym('#',30)
#2 定义函数的三种类型:
#2.1 有参函数:参数是函数体代码用来接收外部传入值的
# 示例:
# def max2(x,y): #x,y就是用来收外部输入的参数.
# # x=10
# # y=3
# if x > y:
# print(x)
# else:
# print(y)
#调用:
# max2(100,101)
#结果,打印101
#2.2 无参函数:当函数体的代码逻辑不需要函数的调用者掺入值的情况下,就无参
#示例1.
# def func():
# print('----------------------')
# print('---soft run-----------')
# print('----------------------')
#示例2.
# def interactive():
# name=input('username>>: ').strip()
# pwd=input('password>>: ').strip()
# print(name,pwd)
#
# interactive() #定义时无参,意味着调用时也无须传入参数
#小练习:
# uname_of_db='egon'
# pwd_of_db='123'
#
# def interactive():
# uname_of_inp=input('username>>: ').strip()
# pwd_of_inp=input('password>>: ').strip()
# return uname_of_inp,pwd_of_inp
# def auth(uname,pwd):
# if uname == uname_of_db and pwd == pwd_of_db:
# print('登陆成功')
# else:
# print('登陆失败')
# interactive()
# # auth()
# res=interactive()
# # x=res[0]
# # y=res[1]
# print(res)
# print(y)
#
# auth(x,y)
#2.3 空函数:函数体为pass
#主要用来设计代码结构.
调用函数:
函数的使用必须遵循:先定义,后调用的原则
#注意:没事先定义函数而直接调用,就相当于在引用一个不存在的变量名
#定义阶段:在定义阶段只检测语法,不执行函数体代码
#调用阶段:根据函数名找到函数的内存地址,然后执行函数体代码
#示例1.
# def func():
# xxx
# print('sadfsadf'(语法错误..)
#函数名加括号即调用函数
#示例2.
# def bar():
# print('from bar')
#
# foo()
# #定义阶段
# def foo():
# print('from foo')
# bar()
#
# def bar():
# print('from bar')
#
# 调用阶段
# foo()
# #定义阶段
# def foo():
# print('from foo')
# bar()
#
# foo() # 调用阶段
#
# def bar():
# print('from bar')
#由于 bar()没有定义故报错.
# 调用函数的三种形式
#1、直接调用
# def func():
# print('from func')
#
# func()
#2、表达式形式,赋值.
# def max2(x,y):
# if x > y:
# return x
# else:
# return y
#
# res=max2(10,3)
# print(res)
#3、当作另一个函数的传入.
#
# def max2(x,y):
# if x > y:
# return x
# else:
# return y
# res=max2(10,3)*100
# print(res)
函数的返回值:
什么时候应该有返回值:
#函数体代码运行完毕后需要有一个返回结果给调用者
#返回值有三种形式:
#1 没有return,返回值None
# def func():
# pass
#
# res=func()
# print(res)
#2 return后跟一个值,返回该值本身
# def func1():
# return 1
#
# res=func1()
# print(res)
#3 return可以逗号分隔,返回多个值,会返回一个元组给调用者
# def func2():
# return 1,2,[1,2,3]
#
# res=func2()
# print(res)
# return注意点:
#1、return返回值的值,没有类型限制
#2、return是函数结束的标志,函数内可以写多个return,但
#执行一次,函数就立刻结束,并把return后的值作为本次调用的返回值
# 示例:
# def func3():
# print('first')
# return 1
# print('second')
# return 2
# print('third')
# return 3
#
# res=func3()
# print(res) #只打印出第一个return的值.