1.python变量作用域
一个 Python 表达式可以访问局部命名空间和全局命名空间里的变量。如果一个局部变量和一个全局变量重名,则局部变量会覆盖全局变量。
每个函数都有自己的命名空间。类的方法的作用域规则和通常函数的一样。
Python 会智能地猜测一个变量是局部的还是全局的,它假设任何在函数内赋值的变量都是局部的。
因此,如果要给函数内的全局变量赋值,必须使用 global 语句。
2.global运用
#coding=utf-8; money ="first"; def globaltest(): money = "second"; print "函数内money:",money; print "函数外money:",money; globaltest(); """ 1 当局部变量与全局变量名称相同时,会优先使用局部变量名称 """ nambers =8; def globaltest2(): global nambers; #nambers = nambers+1; nambers = 999; print "函数内nambers:",nambers; print "函数外nambers:",nambers; globaltest2(); """ 2 当全局变量在函数内不能直接被改变 会报:UnboundLocalError: local variable 'nambers' referenced before assignment 需要声明才能使用:globle nambers; """ lst = [2,4]; def globaltest3(): lst=[1,3]; #lst.append(999); """for i in lst: print i;""" print lst; globaltest3(); """ 3 字符串、数字类型是不能被在局部被修改的,除非使用global关键字,但是 列表,字典是可修改,但不能重新 赋值,如果需要重新赋值,需要在函数内部使用global定义全局变量 """ print lst; """列表2""" list = ['bb','cc']; def globaltest4(): global list; list =['aa']; print(list); globaltest4(); print(list);
运行结果如下:
函数外money: first 函数内money: second 函数外nambers: 8 函数内nambers: 999 [1, 3] [2, 4] ['aa'] ['aa']
标签:函数,python,money,global,nambers,lst,导入,模块,print From: https://www.cnblogs.com/joyware/p/16719957.html