一、什么是函数
函数式组织好的,可重复使用,用来实现特定功能的代码段
二、为什么使用函数
使用函数是为了得到一个针对特定需求,可供重复利用的代码段,提高程序的复用性,减少重复性代码,提高开发效率
三、格式
def 函数名(参数(形参)):
函数体
return 返回值
# 调用
函数名(参数(实参))
(一)案例演示
现在开发出来一款游戏,天梯榜段位制:黑铁、青铜、白银,当你前往天梯榜的时候,需要和天梯榜的管理员NPC出示你的信息,信息包含你的游戏ID和你的天梯榜段位:
# 提前看一下列表是什么,怎么用,嘿嘿
m_list = ['欢迎来到天梯榜:你的信息为==》', '段位为:无双白银', ';游戏ID为:暴力大恐龙']
def presentation(data):
print(data)
if __name__ == '__main__':
for m_data in m_list:
print(m_data, end="")
(二)案例升级
# 先将段位信息表示出来
dark_iron = 0
bronze = 1
silver = 2
# 随机生成段位和游戏ID
# 随机段位:
dan = random.randint(0, 2)
def m_dan():
if dan == 0:
return '初锻黑铁'
elif dan == 1:
return '再锻青铜'
else:
return '无双白银'
# 随机游戏ID:
m_dict = {0: '无', 1: '双', 2: '晓', 3: '昊', 4: '媚', 5: ' '}
def m_name():
for temp01, temp02 in m_dict.items():
name_word = random.randint(0, 5)
if name_word == temp01:
return temp02
def presentationPro(id, grade):
if grade == dark_iron and grade == bronze:
print(f'你的游戏ID为:{id},你的段位为:{grade},将传送你到初级天梯榜,初级天梯榜设有段位保护机制,对你来说大有裨益!')
else:
print(
f'你的游戏ID为:{id},你的段位为:{grade},将传送你到高级天梯榜,高级天梯榜将不会设有段位保护机制,对你来说也是一种磨炼啊!')
if __name__ == '__main__':
presentationPro(m_name(), m_dan())
(三)return返回值
在案例中,我添加了函数的返回值,所谓返回值,就是程序中函数完成事情后,最后给调用者的结果
注意:
函数体在遇到return后就结束了,所以写在return后的代码不会执行
None类型
Python中有一个特殊的字面量:None,其类型是:<class 'NoneType'>
无返回值的函数,实际上就是返回了:None这个字面量
1、什么是None
None是类型'NoneType'的字面量,用于表示:空的、无意义的
2、函数如何返回None
- 不使用return语句即返回None
- 主动return None
3、使用场景
- 函数返回值
- if判断
- 变量定义
四、全局变量和局部变量
想要修改全局变量应该怎么操作:
global关键字:将函数内定义的变量申明为全局变量
# 正常我们定义一个全局变量在函数内部去修改变量的值的话,全局变量的值是不会被修改的,如下:
num = eval(input('请输入一个全局变量:'))
def func01(data):
print(f'全局变量传入进来之后的值为:{data}')
data = 20
print(f'全局变量传入进来之后,进行修改后的值为:{data}')
print(f'全局变量的值为:{num}')
# 那么将局部变量修改为全局变量之后,全局变量的值会不会被修改呢,如下:
def func02(data):
print(f'全局变量传入进来之后的值为:{data}')
global num
num = 20
print(f'全局变量传入进来之后,进行修改后的值为:{num}')
print(f'全局变量的值为:{num}')
if __name__ == '__main__':
func01(num)
func02(num)
结果如下:
五、函数部分综合练习案例:
定义一个全局变量:money,用来记录你的app余额(默认为:100000元)
定义一个密码:password,用来在你支付的时候进行验证
定义如下的函数:
1、查询余额的函数
2、退款到账的函数
3、支付函数
4、主菜单函数
要求:
app启动后要求输入密码进行验证
在执行完毕1、2、3之后都会返回4
在选择退出或者执行不恰的时候,退出app,否则将一直运行
(一)代码框架
money = 100000
password = 123456
# 查询余额函数
def checkBalance():
pass
# 退款到账函数
def refundToAccount():
pass
# 支付函数
def payment():
pass
# 登录函数
def loginOfApp():
pass
# 主菜单函数
def mainMenu():
pass
if __name__ == '__main__':
pass
(二)具体函数实现
1、查询余额的函数
# 查询余额函数
def checkBalance():
print(f'\n账户余额为:{money}元\n\n')
input('输入任意键继续')
2、退款到账的函数
# 退款到账函数
def refundToAccount():
refund = eval(input('输入你想要得到的退款金额(想退多少就有多少[手动狗头]):'))
global money
money += refund
print(f'退款金额:{refund}元24小时内可到账,注意查看\n\n账户余额为:{money}')
input('输入任意键继续')
3、支付函数
# 支付函数
def payment():
global money
commodity = input('买了什么东西:')
money_for_this = eval(input('花了多少钱:'))
money -= money_for_this
if money_for_this > money:
print('您当前还没有消费这件商品的能力,继续加油哦')
else:
print(f'您购买了{commodity},花了{money_for_this}元\n\n当前账户余额为{money}')
input('输入任意键继续')
4、登录函数
# 登录函数
def loginOfApp():
print('----------欢迎使用xxAPP----------')
m_password = eval(input('--------请输入您的账户密码:--------\n'))
if m_password == password:
print('----------欢迎使用xxAPP----------')
print('-----------密码输入正确:----------')
print('-----------成功进入APP-----------')
input('输入任意键继续')
else:
print('----------欢迎使用xxAPP----------')
print('-----------密码输入错误:----------')
print('-----------进入APP失败-----------\n')
loginOfApp()
5、主菜单函数
# 主菜单函数
def mainMenu():
print('\n\n\n----------欢迎使用xxAPP----------')
print('---输入对应数字进行对应的功能操作:---')
print('-----------1、查询余额-----------')
print('-----------2、退款到账-----------')
print('-----------3、支 付-----------')
print('-----------4、退出APP-----------')
print('--------祝您愉快开心每一天---------')
6、整体代码
money = 100000
password = 123456
# 查询余额函数
def checkBalance():
print(f'\n账户余额为:{money}元\n\n')
input('输入任意键继续')
# 退款到账函数
def refundToAccount():
refund = eval(input('输入你想要得到的退款金额(想退多少就有多少[手动狗头]):'))
global money
money += refund
print(f'退款金额:{refund}元24小时内可到账,注意查看\n\n账户余额为:{money}')
input('输入任意键继续')
# 支付函数
def payment():
global money
commodity = input('买了什么东西:')
money_for_this = eval(input('花了多少钱:'))
money -= money_for_this
if money_for_this > money:
print('您当前还没有消费这件商品的能力,继续加油哦')
else:
print(f'您购买了{commodity},花了{money_for_this}元\n\n当前账户余额为{money}')
input('输入任意键继续')
# 登录函数
def loginOfApp():
print('----------欢迎使用xxAPP----------')
m_password = eval(input('--------请输入您的账户密码:--------\n'))
if m_password == password:
print('----------欢迎使用xxAPP----------')
print('-----------密码输入正确:----------')
print('-----------成功进入APP-----------')
input('输入任意键继续')
else:
print('----------欢迎使用xxAPP----------')
print('-----------密码输入错误:----------')
print('-----------进入APP失败-----------\n')
loginOfApp()
# 主菜单函数
def mainMenu():
print('\n\n\n----------欢迎使用xxAPP----------')
print('---输入对应数字进行对应的功能操作:---')
print('-----------1、查询余额-----------')
print('-----------2、退款到账-----------')
print('-----------3、支 付-----------')
print('-----------4、退出APP-----------')
print('--------祝您愉快开心每一天---------')
if __name__ == '__main__':
loginOfApp()
while True:
mainMenu()
operate = eval(input('请输入你的操作:'))
if operate == 1:
os.system('cls')
checkBalance()
elif operate == 2:
refundToAccount()
elif operate == 3:
payment()
else:
print('成功退出APP,期待您的下次使用')
break
满满干货分享,还不点赞关注up~~