• python学习笔记三:函数及变量作用域


    一、定义

    def functionName([arg1,arg2,...]):
        code

    二、示例

    #!/usr/bin/python
    #coding:utf8
    #coding=utf8
    #encoding:utf8
    #encoding=utf8
    
    def fun(x=3,y=''):
        print '生成一个',x,'',y,'口味的蛋糕'
    
    fun()
    
    fun(10)
    
    fun(y='奶油')

    冗余参数:

    #!/usr/bin/python
    
    def f(name="jim",age=20):
        print "name:%s age:%s" % (name,age)
    
    t=('tom', 25)
    d={'age':25,'name':'lucy'}
    
    f(*t)
    #name:tom age:25
    
    f(**d)
    #name:lucy age:25
    
    def f1(x,*args):
        print x,args
    
    t1=('tom',25,'male')
    f1(*t1)
    #tom (25,'male')
    
    def f2(x,**args):
        print x,args
    
    d1={'x':1,'y':2}
    f2(**d1)
    #1 {'y':2}
    
    def f3(x,*arg1,**arg2):
        print x
        print arg1
        print arg2
    
    f3(1,2,3,a=1,b=2,c=3)
    #1
    #(2,3)
    #{'a':1,'b':2,'c':3}

    三、Python 变量作用域

    局部变量

    当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是局部的。这称为变量的作用域。所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开始。

    a = 1
    def fun(a):
        print a
        a = 2
        print a
    
    fun(x)
    print a

    结果:

    1
    2
    1

    解释:

    在函数中,我们第一次使用a的值的时候,Python使用函数声明的形参的值。

    接下来,我们把值2赋给a。a是函数的局部变量。所以,当我们在函数内改变a的值的时候,在主块中定义的a不受影响。

    在最后一个print语句中,我们证明了主块中的a的值确实没有受到影响。

    使用global语句

    如果你想要为一个定义在函数外的变量赋值,那么你就得告诉Python这个变量名不是局部的,而是全局的,我们使用global语句完成这一功能。

    a=1
    def fun():
        global a
        print a
        a = 2
        print a
    
    fun()
    print a

    输出:

    1
    2
    2

    解释:

    global语句被用来声明a是全局的——因此,当我们在函数内把值赋给a的时候,这个变化也反映在我们在主块中使用a的值的时候。

  • 相关阅读:
    iframe引入网页
    input同名
    混合框架
    <header><footer>引用
    <dl>
    凸包性质——cf1044C
    几何求叉积+最短路——cf1032D
    fresco 设置资源路径时的一个坑
    马拉车+贪心——cf1326D
    【模板变形】凸壳二分+斜率优化dp——cf1083E
  • 原文地址:https://www.cnblogs.com/lurenjiashuo/p/python-note-function.html
Copyright © 2020-2023  润新知