• 九、函数参数及变量


    一、函数参数介绍

      函数中的参数分为形参和实数。

      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)

    运行结果:

  • 相关阅读:
    iOS iPad开发之Modal
    iOS SVN终端指令
    iOS iPad开发之UIPopoverController的使用
    iOS Xcode6和Xcode5的区别?
    算法 查找算法--二分查找
    算法 排序算法--快速排序
    算法 排序算法--选择排序
    XCode签名证书死活不能选
    IOS7 适配时导航栏变黑
    Xcode Provisioning 路径
  • 原文地址:https://www.cnblogs.com/hzzhbest/p/14678778.html
Copyright © 2020-2023  润新知