函数中的参数分为形参和实数。
1、形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
2、实参可以是常量、变量、表达式函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
当实参是变量时举例:
def calc(x,y): ‘‘‘ 计算x的y次幂 :param x:整形数字 :param y:整型数字 :return:返回运算结果 ‘‘‘ result=x**y return result a = 2 b = 3 c=calc(a,b) print(c)#运行结果:8
在子程序定义的变量为全局变量,在程序最开始定义的变量为全局变量(没有缩进),全局变量任何时候都可以调用;
全局变量作用域为整个程序,局部变量定义域为定义该变量的子程序;
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用,在其他地方全局变量起作用,若想使全局变量也起作用,可用globe定义
例:
<当全局变量为字符串时>
1、调用全局变量
name = ‘李白‘#全局变量 def create_name(): print(‘create_name:‘,name)#未给name赋值时,调用全局变量 create_name()#运行结果: create_name: 李白 print(name)#运行结果:李白
2、调用局部变量
name = ‘李白‘#全局变量 def create_name(): name = ‘达摩‘ print(‘create_name:‘,name)#当给name赋值时,调用自己的变量(局部变量) create_name()#运行结果: create_name: 达摩 print(name)#运行结果:李白
3、当在函数中给变量赋值,但是想操作的是全局变量时(globe)
也就是说,当函数内部存在globe时,函数也就是进行了修改操作,即对全局变量进行重新赋值;无globe时,只能执行查的操作。
name = ‘李白‘ def create_name(): global name name = ‘李白变达摩‘ print("create_name:",name)#运行结果: create_name: 李白变达摩 create_name() print(name)#运行结果:李白变达摩
4、当变量名称不同时,按照层次调用(先在自己的作用域去寻找)
name = "流语录" def creat_name(): name1 = "涨换" print("change_name:",name)#运行结果:change_name: 流语录 print("creat_name:",name1)#运行结果:creat_name: 涨换 creat_name() print(name)#运行结果:流语录
<当全局变量为列表时>
1、调用全局变量
name = ["大苹果","大橘子"] def creat_name(): print("我要吃:",name)#运行结果:我要吃: [‘大苹果‘, ‘大橘子‘] creat_name()
2、调用局部变量
name = ["大苹果","大橘子"] def creat_name(): name = "大香蕉" print("我要吃:",name)#运行结果:我要吃: 大香蕉 creat_name()
3、当在函数中给变量赋值,但是想操作的是全局变量时(globe)
(1)在全局变量的列表中进行值的添加 append (说明:也就是说globe时,可对可变变量类型进行相关操作)
name = ["大苹果","大橘子"] def creat_name(): global name name.append("大香蕉") print("我要吃:",name)#运行结果:我要吃: [‘大苹果‘, ‘大橘子‘, ‘大香蕉‘] creat_name()
(2)在全局变量的列表中进行值的清空 clear
name = ["大苹果","大橘子"] def creat_name(): global name name.clear() print("我要吃:",name)#运行结果:我要吃: [] creat_name()
小结:当全局变量为不同类型时,可根据类型的特点对全局变量进行相关的操作,比如增删改查等!!!
规则:全局变量的变量名要大写,局部变量为小写
嵌套关系举例一:
NAME = "lyl" def n1(): name = "l" print(name) def n2(): name = "y" print(name) n2() def n3(): global NAME NAME = "LTL" print(NAME) n3() n1()
运行结果:
嵌套关系举例二:
NAME = "风雨" def n1(): name="飘摇" def n2(): global NAME name = "大风" print(name) n2() print(name) n1() print(NAME)
运行结果:
关键字nonlocal (指上级变量)
NAME = "风雨" def n1(): name="飘摇" def n2(): nonlocal name name = "大风" print(name) n2() print(name) n1() print(NAME)
运行结果:
原文:https://www.cnblogs.com/hzzhbest/p/14678778.html