zoukankan      html  css  js  c++  java
  • python的函数(二)

    1,函数的变量

    2,函数的返回值

    1,函数的变量

    1.0,函数的变量分为局部变量和全局变量。

    def fun():
    	x = 100
    	print x 
    

    这个x是局部变量,函数执行完后,x的变量就会销毁,只能在函数内部有效。

    x = 100
    def fun():
    	print x 
    print x  
    

    这里的x = 100'是全局变量,函数内部也可以调用。但是调用的只能用于print,做其他操作都会报错(这里的x可以是数字或者字符串)。比如:

    x = 100
    def fun():
    	print x 
    	x+=1
    

    像这个执行了 x+=1 的动作就会报错。

    当然,可以通过global关键字在函数内部声明为全局变量,这样声明后,就可以做其他操作。

    x = 100
    def fun():
    	global x
    	x +=1
    	print x

    如果你的全局变量为列表,字典,集合这样可变的数据类型的变量,其实在函数内部也是可以更改它的值。

    name=['tom','jack']
    def fun():
        name[0]='tom1'
        print name
    fun()
    print name
    

     

    输出结果都为:['tom1', 'jack'],可见函数内部其实也是可以更改变量值的。

    1.1,在函数内部定义的变量在函数外部也可以使用,也使用关键字global关键字。(不建议这么操作)

    def fun():
        global y
        y = 1
    fun()
    print y

    这样y也就可以输出了,但前提条件是你必须先调用函数。

    1.2,函数locals,输出脚本执行中有哪些变量。如果写到函数内部,返回的则是函数内部的所有变量。如果是写的是程序里面,则输出的程序所有的变量。

    def fun():
    	x = 1
    	y = 2
    	print locals()

    查看程序的所有变量,以字典形式输出。

    #!/usr/bin/env python
    print 'hello,world'
    pritn locals()

    2,函数返回值(return)

     函数如果默认没有return语句,则函数默认return None.函数遇到return结束运行。

    def test():
        print 'test'
    
    print test()

    上述代码返回:test和None.为什么会有None呢?因为函数如果没有retun语句,默认会return None。

    def test2(var):
        if str(var).isdigit():
            return 'this is  number'
        return 'thisi is not number'
    
    print test2(1) 

    可以发现,if 后面没用else。上面写到了,执行到return的时候代码,函数就会停止运行。所以只要上面的if执行了,后面的return就不会执行。

     上面讲的return都是返回1个,那么是否可以返回多个呢?

    def test2(var):
        if str(var).isdigit():
            return 'this is  number','hello',['a','b'],{'name':'tom'}
    data = test(2)
    print data
    

      

    上面返回结果:('this is  number', 'hello', ['a', 'b'], {'name': 'tom'}),可见,如果返回值的个数是多个的话,会以元祖的形式返回。

    小结:

    1,变量分为全局变量和局部变量。如果定义一个全局变量,函数内部如果调用这个局部变量,只能使用print 的关键字输出(换句话说函数内部其实是知道全局变量的,只是不能操作全局变量),所以如果你在函数内部
    使用global 关键字,就是在告诉程序,我要操作全局变量了。此时,函数才可以正式的操作全局变量。

    2,局部定义的变量如果想变为全局变量,可以使用global关键字。这样这个局部变量就可以称为全局变量了,但前提条件是你要执行该函数。

    3,函数返回值的个数如果为0,则默认返回None,如果是多个返回值,则以元祖的形式返回。

  • 相关阅读:
    Qt中的角度转弧度
    Qt5鼠标事件及实例
    POJ 2239 Selecting Courses【最大匹配】
    POJ 1325 Machine Schedule【最小点覆盖】
    POJ 1469 COURSES【二分图最大匹配】
    POJ 1274 The Perfect Stall【二分图最大匹配】
    poj2226Muddy Fields【最小点覆盖(建图的思路比较好)】
    hdu4160Dolls【最小路径覆盖】
    hdu2444The Accomodation of Students【判断二分图+最大匹配】
    HLG1407Leyni的游戏【最小点权覆盖集】
  • 原文地址:https://www.cnblogs.com/lin1/p/8184344.html
Copyright © 2011-2022 走看看