zoukankan      html  css  js  c++  java
  • Python函数二

    函数2

    目标:

    • 变量作用域
    • 多函数程序执行流程
    • 函数的返回值
    • 函数的参数
    • 拆包和交换两个变量的值
    • 引用
    • 可变和不可变类型

    一、变量作用域

    变量的作用域指的是变量生效的范围,主要分为两类:局部变量全局变量

    • 局部变量

    所谓局部变量是定义在函数体内的部的变量,即只在函数体内部生效

    def testA():
    	a=100
    	print(a)
    testA()#100
    print(a)# 报错:name 'a' is not defined
    

    变量a是定义在testA函数内部的变量,在函数外部访问则立即报错

    局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量

    • 全局变量

    所谓全局变量,指的是在函数体内,外都能生效的变量

    思考:如果有一个数据,在函数A和函数B中都要使用,该怎么办?

    答:将这个数据存储在一个全局变量里面

    #定义全局变量a
    a=100
    def testA():
    	print(a)
    # 	访问全局变量a,并打印变量a存储的数据
    
    def testB():
    	print(a)#访问全局变量a,并打印变量a存储的数据
    
    testA()#100
    testB()#100
    

    思考: testB 函数需求修改变量a的值为200,如何修改程序?

    #定义全局变量a
    a=100
    def testA():
    	print(a)
    # 	访问全局变量a,并打印变量a存储的数据
    
    def testB():
    	a=200
    	print(a)#访问全局变量a,并打印变量a存储的数据
    
    testA()#100
    testB()#200
    print(f'全局变量a={a}') #全局变量a=100
    
    

    image-20200912190727906

    思考:在 testB 函数内部的 a = 200 中的变量a是在修改全局变量 a 吗?
    答:不是。观察上述代码发现,15行得到a的数据是100,仍然是定义全局变量a时候的值,而没有返回testB 函数内部的200。综上: testB 函数内部的 a = 200 是定义了一个局部变量。
    思考:如何在函数体内部修改全局变量?

    #定义全局变量a
    a=100
    def testA():
    	print(a)
    # 	访问全局变量a,并打印变量a存储的数据
    
    def testB():
    	# global 关键字声明a是全局变量
    	global a
    	a=200
    	print(a)
    
    testA()#100
    testB()#200
    print(f'全局变量a={a}') #全局变量a=200
    
    

    image-20200912191343093

  • 相关阅读:
    C# 泛型
    css样式优先级
    c# 可空类型
    JS 两个数组合并
    c# 参数传递问题(形参与实参)
    c# JsonReader读取json字符串
    C# 获取当前ip
    swprintf引发的血案
    Struts2解析FreeMarker模板中变量的顺序
    structs2在action中输出
  • 原文地址:https://www.cnblogs.com/James-221/p/13658097.html
Copyright © 2011-2022 走看看