首页 > 代码库 > Python全栈开发【基础三】
Python全栈开发【基础三】
Python全栈开发【基础三】 |
本节内容:
- 函数(全局与局部变量)
- 递归
函数 |
一、定义和使用
函数最重要的是减少代码的重用性和增强代码可读性
1 def 函数名(参数):
2
3 ...
4 函数体
5 ...
6 返回值
函数的定义主要有如下要点:
- def:表示函数的关键字
- 函数名:函数的名称,日后根据函数名调用函数
- 函数体:函数中进行一系列的逻辑计算
- 参数:为函数体提供数据
- 返回值:当函数执行完毕后,可以给调用者返回数据。
总结使用函数的好处:
1.减少代码重用
2.保持一致性,易维护
3.可扩展性
返回值
1 def 发送邮件(): 2 3 发送邮件的代码... 4 5 if 发送成功: 6 7 return True 8 9 else: 10 11 return False 12 13 while True: 14 15 # 每次执行发送邮件函数,都会将返回值自动赋值给result 16 17 # 之后,可以根据result来写日志,或重发等操作 18 19 20 result = 发送邮件() 21 22 if result == False: 23 24 记录日志,邮件发送失败...
二、参数
1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
1 def calc(x,y) #x,y即为形参 2 res = x**y 3 return res 4 5 c = calc(2,3) #2,3即为实参 6 print(c)
3.位置参数和关键字(标准调用:实参与形参位置一一对应;关键字调用:位置无需固定)
注:位置参数必须在关键字参数前面
1 def calc(x,y): 2 res = x**y 3 return res 4 5 c = calc(y=2,x=3) #关键字参数 6 print(c) 7 8 9 10 def calc(x,y): 11 res = x**y 12 return res 13 14 c = calc(2,y=3) #2为位置参数,y=3为关键字参数 15 print(c)
4.默认参数
1 def calc(x,y=3): #y=3为默认参数后面函数可不传值 2 res = x**y 3 return res 4 5 c = calc(3) #可不传y值 6 print(c)
5.参数组
1 ###############列表*args 2 3 def func(*args): 4 print args 5 6 # 执行方式一 7 func(11,22,33,55,66) 8 9 # 执行方式二 10 li = [11,22,33,55,66] 11 func(*li) 12 13 14 ###############字典**kwargs 15 16 def func(**kwargs): 17 print kwargs 18 19 20 # 执行方式一 21 func(name=‘ocean‘,age=18) 22 23 # 执行方式二 24 li = {‘name‘:‘ocean‘, age:18, ‘job‘:‘python‘} 25 func(**li)
三、 局部变量与全局变量
全局变量在函数里可以随便调用,但要修改就必须用 global 声明
1 ##########全局变量与局部变量######## 2 NAME = "aa" 3 4 def cn(): 5 global NAME 6 NAME = "mm" 7 print(">>>>",name) 8 print(name) #输出aa 9 cn() #>>>mm 10 print(name) #mm 11 12 13 ########## 14 #本例重点是函数只有调用时才运行 15 name = "aa" 16 #全局变量一般为大写用于区分局部变量,这里临时使用小写 17 def aa(): 18 name = "bb" 19 def bb(): 20 nonlocal name 21 #nonlocal用来在函数或其他作用域中使用外层(非全局)变量 22 name = "cc" 23 bb() 24 print(name) 25 print(name) 26 aa() 27 print(name)
递归 |
在函数内部,可以调用其他函数。如果一个函数在内部调用函数本身,这个函数就是递归函数。
递归特性:
1. 必须有一个明确的结束条件
2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3. 递归效率不高,递归层次过多会导致栈溢出,浪费内存
1 def calc(n): 2 print(n) 3 if int(n/2) ==0: 4 return n 5 return calc(int(n/2)) 6 7 calc(10) 8 9 输出: 10 10 11 5 12 2 13 1
Python全栈开发【基础三】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。