• 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

  • 相关阅读:
    二线城市的创业人才之战
    小程序的风口到底如何?
    短视频广告一条上百万,揭秘短视频背后的故事
    让我们来看看这些企业的创始人,在互联网金融的十年里的故事
    背靠大树成为创业成功的显学
    草根站长的艰辛创业路
    互联网大佬们的创业重要选择时刻
    80后的罗敏已经在创业路上走了十几年
    CentOS7 通过 YUM 升级 VIM8
    matplotlib 画图中的basemap安装问题
  • 原文地址:https://www.cnblogs.com/James-221/p/13658097.html
Copyright © 2020-2023  润新知