函数
为什么要有函数?什么是函数?
1.组织结构不清晰,可读性差
2.代码冗余(重复的代码)
3.管理维护的难度极大,扩展性差
具备某一个功能的工具就是程序中的函数
事先准备工具的过程------》》函数的定义
拿来就用-------》》函数的调用
所以函数的使用必须遵循:先定义,再调用
注意:没事先定义函数而直接调用,就相当于在引用一个不存在的变量名
函数的定义
“““
1.语法
def 函数名(参数1,参数2,....):
"""
文档描述
"""
代码1
代码2
代码3
return 值
def:定义函数的关键字
函数名:是用来调用函数的,函数名的命名必须能反映出函数的功能
文档描述:推荐写上,用来增强函数的可读性
代码块:函数的功能实现代码
return:
”””
不用函数:
print('========================')
print('hello egon')
print('========================')
1.定义阶段
def print_sym(sym,count):
print(sym*count) #定义函数就是把一堆代码,找个内存空间放起来,内存地址给函数名
def print_msg(msg):
print(' %s' %msg)
2.调用阶段(函数名加括号就是在调用函数)
print(print_sym) #内存地址
print_sym('#',30)
print_msg('hello egon')
print_sym('#',30
2.定义函数的三种类型:
2.1有参函数,参数是函数体代码用来接收外部传入值的
def max2(x,y):
if x>y:
print(x)
else:
print(y)
max2(100,101)
2.2无参函数:当函数体的代码逻辑不需要函数的调用者渗入的情况下,就无参
def func():
print('.........................')
print('....soft run.............')
print('.........................')
def interactive():
name=input('username>>:').strip()
pwd=input('password>>:').strip()
print(name,pwd)
interactive() #定义时无参,意味着调用时也无须传入参数
2.3空函数,函数体为pass
def auth():
"""
这是一个认证功能
:return:
"""
pass #(占位符)
练习:有参
uname_of_db='egon'
pwd_of_db='123'
def interactive():
uname_of_inp=input('username>>:')
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('登陆失败')
res=interactive()
x=res[0]
y=res[1]
# print(x)
# print(y)
auth(x,y) #(认证功能)
调用函数:函数名加括号即调用函数
定义阶段:在定义阶段只检测语法,不执行函数体代码
调用阶段:根据函数名找到函数的内存地址,然后执行函数体代码
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 func():
print('from,func')
fun()
形式二:
def max2(x,y):
if x>y:
return x
else:
return y
res=max2(10,3)
print(res)
形式三:
def max2(x,y):
if x>y:
return x
else:
return y
res=max2(10,3)*100
print(res)
形式四:
res=max2(max2(10,3),11)
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后的值作为本次调用的返回值。