python 循环笔记
函数编程
一 为何要用函数的问题
1、代码的组织结构不清晰,可读性差
2、遇到重复的功能只能重复编写实现代码,代码冗余
3、功能需要扩展时,需要找出所有实现该功能的地方修改之,无法统一管理且维护难度极大
二 函数是什么
针对二中的问题,想象生活中的例子,修理工需要实现准备好工具箱里面放好锤子,扳手,钳子等工具,然后遇到锤钉子的场景,拿来锤子用就可以,而无需临时再制造一把锤子。
修理工===>程序员
具备某一功能的工具===>函数
要想使用工具,需要事先准备好,然后拿来就用且可以重复使用
要想用函数,需要先定义,再使用
<1>打印佛祖案例
请看如下代码:
print(" ooOoo “)
print(” o8888888o “)
print(” 88 . 88 “)
print(” (| -_- |) “)
print(” O\ = /O “)
print(” /---'\\____ ") print(" . ' \\| |//
. “)
print(” / \||| : |||// \ “)
print(” / ||||| -:- |||||- \ “)
print(” | | \\\ - /// | | “)
print(” | \| ‘’\—/’’ | | “)
print(” \ .-\ -
/-. / “)
print(” . .' /--.--\\
. . __ “)
print(” ."" '< .___\\_<|>_/___.' >'"". ") print(" | | :
- \.;
\ _ /;.
/ - : | | ") print(" \\ \\
-. \ \ / / .-/ / ") print(" ======
-.-.___\\_____/___.-
.-’====== “)
print(” `=—=’ “)
print(” “)
print(” … “)
print(” 佛祖镇楼 BUG辟易 “)
print(” 佛曰: “)
print(” 写字楼里写字间,写字间里程序员; “)
print(” 程序人员写程序,又拿程序换酒钱。 “)
print(” 酒醒只在网上坐,酒醉还来网下眠; “)
print(” 酒醉酒醒日复日,网上网下年复年。 “)
print(” 但愿老死电脑间,不愿鞠躬老板前; “)
print(” 奔驰宝马贵者趣,公交自行程序员。 “)
print(” 别人笑我忒疯癫,我笑自己命太贱; “)
print(” 不见满街漂亮妹,哪个归得程序员?")
运行后的现象:
<2>把打印佛祖封装成一个函数
def print_fouZu(): def 函数名():定义函数名和变量名一样
print(" o8888888o “)
print(” 88 . 88 “)
print(” (| -_- |) “)
print(” O\ = /O “)
print(” /---'\\____ ") print(" . ' \\| |//
. “)
print(” / \||| : |||// \ “)
print(” / ||||| -:- |||||- \ “)
print(” | | \\\ - /// | | “)
print(” | \| ‘’\—/’’ | | “)
print(” \ .-\ -
/-. / “)
print(” . .' /--.--\\
. . __ “)
print(” ."" '< .___\\_<|>_/___.' >'"". ") print(" | | :
- \.;
\ _ /;.
/ - : | | ") print(" \\ \\
-. \ \ / / .-/ / ") print(" ======
-.-.___\\_____/___.-
.-’====== “)
print(” `=—=’ “)
print(” “)
print(” … “)
print(” 佛祖镇楼 BUG辟易 “)
print(” 佛曰: “)
print(” 写字楼里写字间,写字间里程序员; “)
print(” 程序人员写程序,又拿程序换酒钱。 “)
print(” 酒醒只在网上坐,酒醉还来网下眠; “)
print(” 酒醉酒醒日复日,网上网下年复年。 “)
print(” 但愿老死电脑间,不愿鞠躬老板前; “)
print(” 奔驰宝马贵者趣,公交自行程序员。 “)
print(” 别人笑我忒疯癫,我笑自己命太贱; “)
print(” 不见满街漂亮妹,哪个归得程序员?")
print_fouZu()
没注意到 编写的好像都给缩进了
<3>小总结:
如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数
把一个东西当做函数叫封装 比如:小孩玩具装到箱子里面 就是一个整体了
三 函数分类
1、内置函数为了方便我们的开发,针对一些简单的功能,python解释器已经为我们定义好了的函数即内置函数。对于内置函数,我们可以拿来就用而无需事先定义,如len(),sum(),max()
ps:我们将会在最后详细介绍常用的内置函数。
2、自定义函数
很明显内置函数所能提供的功能是有限的,这就需要我们自己根据需求,事先定制好我们自己的函数来实现某种功能,以后,在遇到应用场景时,调用自定义的函数即可。
函数定义和调用
1.定义函数
定义函数的格式如下:
如何自定义函数?
#语法def 函数名(参数1,参数2,参数3,…):
‘’‘注释’’’
函数体
return 返回的值
#函数名要能反映其意义
def 函数名():
代码
demo:
# 定义一个函数,能够完成打印信息的功能
def printInfo():
print(’------------------------------------’)
print( ’ 人生苦短,我用Python’)
print( ‘------------------------------------’)
三 函数在定义阶段都干了哪些事?
#只检测语法,不执行代码
也就说,语法错误在函数定义阶段就会检测出来,而代码的逻辑错误只有在执行时才会知道
2.调用函数
定义了函数之后,就相当于有了一个具有某些功能的代码,想要让这些代码能够执行,需要调用它
调用函数很简单的,通过 函数名() 即可完成调用
demo:
# 定义完函数后,函数是不会自动执行的,需要调用它才可以
printInfo()
3.分析函数执行的过程
<1>回顾程序执行的三种流程
顺序执行,选择执行,循环执行
<2>函数执行的流程
#coding:utf-8
定义函数
def print_info(): # 1、程序从第一行开始执行,发现定义一个函数print_info
# 函数功能代码
print ("-"*50)
print(“名片管理系统…”)
print (“人生苦短,我用python”)
print(" 1:登录")
print(" 2:退出")
print ("-" * 50) # 执行到这一步,从哪里进去的从哪里出去
调用函数
print_info() # 加括号代表执行 # 最后函数print_info走到这里 开始调用里面的函数。
定义多个函数:
现在需求又来了,需要定义一个三角形
#coding:utf-8
定义函数
def print_info(): # 1、程序从第一行开始执行,发现定义一个函数print_info
# 函数功能代码
print ("-"*50)
print(“名片管理系统…”)
print (“人生苦短,我用python”)
print(" 1:登录")
print(" 2:退出")
print ("-" * 50) # 执行到这一步,从哪里进去的从哪里出去
调用函数
print_info() # 加括号代表执行 # 最后函数print_info走到这里 开始调用里面的函数。
def print_sanjiaoxing():
print("")
print("" * 2)
print("" * 3)
print("" * 4)
print_sanjiaoxing()
注意:这样写不是有经验的人定义的
多个函数调用执行流程:
定义函数的三种形式
#1、无参:应用场景仅仅只是执行一些操作,比如与用户交互,打印
参考代码:
def auth():
name = input(">>>:")
password = input(“passwd>>>:”)
if name == “test” and password == “123”:
print(“login successfull”)
else:
print(“user or password err”)
auth()
#2、有参:需要根据外部传进来的参数,才能执行相应的逻辑,比如统计长度,求最大值最小值
参考代码:
def my_max(x,y):
if x > y:
print(x)
else:
print(y)
my_max(1,3)
#3、空函数:设计代码结构
就Pass,什么也不做
#结论:
#1、定义时无参,意味着调用时也无需传入参数
#2、定义时有参,意味着调用时则必须传入参数