上节课回顾
1.函数
数学中函数:y=2*x+1
python中参数:
def test(x,y,type=None):
"注释"
代码块
return res
函数名代表内存地址、引用,调用时要加括号
2.参数
形参---调用时占内存,不调用时释放内存
实参--占内存
位置参数一一对应
关键字参数
默认参数
位置参数在关键字参数左边
3.
def test(x,*args,**kwargs):
"注释"
代码块
return res
4.函数好处:
减少重复代码
易维护
可扩展
全局变量与局部变量
- 全局变量:没有任何的缩进,在全局生效的变量
- 局部变量:子程序中定义的变量
- 只有函数有私密功能
- 解释器从上到下运行,遇到函数只编译不执行
规则:全局变量变量名大写,局部变量吧变量名小写
global全局变量、nonlocal上一级变量
name="yangzi"#全局变量 def change_name(): name="jinmi"#局部变量 print("chang_name",name) change_name() print(name) # 结果 # chang_name jinmi # yangzi
global
如果函数的内容无global关键字
优先读取局部变量,无局部变量时,能读取全局变量,无法对全局变量进行赋值;对于可变变量可以对内部元素进行操作
- 有声明局部变量
name="yangzi" def change_name(): name="jinmi" print("chang_name",name) change_name() # 结果 # chang_name jinmi
- 无声明局部变量
name="yangzi" def change_name(): print("chang_name",name) change_name() # 结果 # chang_name yangzi
name=["yangzi","jingtian"] def change_name(): name.append("123") print("chang_name",name) change_name() # 结果 # chang_name yangzi
有global关键字,变量本质上就是全局变量,可读取赋值
name=["产品经理","qianyue"] def change_name(): global name name="jinmi" print("chang_name",name) change_name() print(name) # 结果 # chang_name jinmi # jinmi
NAME ="海峰" def name1(): name="huang" print(name) def liuyang(): name="liuyang" print(name) def mulige(): name="huzhihua" print(name) print(name) mulige() liuyang() print(name) name1() # 结果 # huang # liuyang # liuyang # huzhihua # huang
#global全局变量
name ="yangzi" def weihou(): name="chenzhuo" def weiweihou(): global name name="lengjin" weiweihou() print(name) print(name) weihou() print(name) # 结果 # yangzi # chenzhuo # lengjin
# nonlocal上一级变量 name ="yangzi" def weihou(): name="chenzhuo" def weiweihou(): nonlocal name name="lengjin" weiweihou() print(name) print(name) weihou() print(name) # 结果 # yangzi # lengjin # yangzi
风湿理论
未看05 python s3 day15 风湿理论之函数即变量.ev4
函数递归
函数内部调用函数