• 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

  • 相关阅读:
    Android studio 一些技术添加依赖,依赖库
    第三方集成之Mob-SMSSDk-短信验证
    使用友盟第三方集成实现QQ登录
    Android 日夜间切换Demo
    Sqlite数据库添加数据以及查询数据方法
    从网络获取json数据,使用imageloader获取网络图片资源并显示在ListView上
    检测Xcode项目不用的文件与图片
    Markdown语法
    iOS动画
    OC与JS交互之WKWebView
  • 原文地址:https://www.cnblogs.com/James-221/p/13658097.html
Copyright © 2020-2023  润新知