python函数变量引用 python函数引用另一函数的变量

python 函数外面的变量能在里面使用吗?这涉及到变量的生命周期问题,一般的,在函数里面声明的变量在函数外是不起作用的 。
一个比较简单的解决办法是你在函数外就先声明这个变量,声明成全局变量 。然后在函数里面进行操作和赋值 。
最后就能在函数外获取变量的值了 。例如:
123456x = 0def a():x = 2if __name__ == '__main__':a()print x
最终x打印出来的结果就是2
Python其实很简单 第十二章 函数与变量的作用域 在前面已经多次提到函数这个概念,之所以没有解释什么是函数 , 是因为程序中的函数和数学中的函数差不多 , 如input()、range()等都是函数,这些都是Python的标准函数 , 直接使用就可以了 。根据需要,用户也可以自定义函数 。
12.1 函数
函数的结构:
def 函数名(参数):
函数体
return 返回值
例如:数学中的函数f(x)=2x+5在Python中可以定义如下:
def f(x):
y=2*x+5
return(y)
如果x取值为3,可以使用如下语句调用函数:
f(3)
下面给出完整的程序代码:
def f(x):
y=2*x+5
return(y)
res=f(3)
print(res)
运行结果:11
如上例中的x是函数f(x)的参数,有时也被称为形式参数(简称形参),在函数被调用时,x被具体的值3替换y就是函数的返回值 , 这个值3也被称为实际参数(简称实参) 。
上例中的y是函数f(x)的返回值 。并不是所有的函数都有参数和返回值 。如下面的函数:
def func():
print('此为无参数传递、无返回值的函数')
func()
输出结果:此为无参数传递、无返回值的函数
可以看出,该函数func()无参数,故调用时不用赋给参数值 。
函数也可以有多个参数,如f(x,y)=x2+y2 , 可用Python语言定义如下:
def f(x,y):
z=x**2+y**2
return z
print(f(2,3)) #调用函数f(x,y)
输出结果:13
也可以通过直接给参数列表中的参数赋值的方法,为参数添加默认值,如果用户赋予参数值,则按照用户赋值执行,否则使用默认值 。例如:
def f(x,y=3):
z=x**2+y**2
return z
若调用时参数列表为(2,1) , 即x赋值为2,y赋值为1:
print(f(2,1))
输出结果为:5
若调用时参数列表为(2),即x赋值为2,y赋值省缺 , 则y使用默认值:
print(f(2))
输出结果为:13
回调函数,又称函数回调,是将函数作为另一函数的参数 。
例如:
def func(fun,m,n):
fun(m,n)
def f_add(m,n):
print('m+n=',m+n)
def f_mult(m,n):
print('m*n=',m*n)
func(f_add,2,3)
func(f_mult,2,3)
输出结果:
m+n= 5
m*n= 6
在f_add(m,n)和f_mult(m,n)被定义前 , func(fun,m,n)中的fun(m,n)就已经调用了这两个函数,即“先调用后定义”,这也是回调函数的特点 。
如果无法预知参数的个数 , 可以在参数前面加上*号,这种参数实际上对应元组类型 。譬如,参会的人数事先不能确定,只能根据与会人员名单输入:
def func(*names):
print('今天与会人员有:')
for name in names:
print(name)
func('张小兵','陈晓梅','李大海','王长江')
运行后,输出结果为:
今天与会人员有:
张小兵
陈晓梅
李大海
王长江
参数为字典类型,需要在参数前面加上**号 。
def func(**kwargs):
for i in kwargs:
print(i,kwargs[i])
func(a='a1',b='b1',c='c1')
输出结果为:

推荐阅读