#!/user/bin/env python
# coding:utf-8
'''
Created on 2018/2/28
@author: yl
'''
print 'python变量作用域'
#复刻一个经典java面试题
number = 199
sum = 0
#sum在方法内是局部变量,修改不会影响外部的sum,这是对基本类型而言
def plus(i):
sum = number+i
print 'function result:'+str(sum)
plus(1)
print sum
#对于复合类型引用则是修改同一个对象
names = ['张三','李四','王五','赵六','田七']
def rename(name):
names[0] = name
rename('小三')
print names[0]
#使用global在方法内定义或覆盖全局变量
result = 0
def sub(i):
global result
result = 100-i
sub(1)
print result
#方法引用
def functionA():
def functionB():#相当于内联方法或闭包
print 'this is functionB'
return functionB
print functionA() #输出functionB对象,而非执行
print 'execute'
functionA()() #执行function的内联方法
输出:
python变量作用域
function result:200
0
小三
99
<function functionB at 0x000000000544A0B8>
execute
this is functionB