python 修饰符参数传递_将全局值作为参数传递给修饰符和函数

我是python的新手,学习装饰师。没有参数和有参数(如字符串)的装饰器似乎是直截了当的。但是如果我想传递一个全局值而不是一个“srting”作为参数,它就失败了。我有所有这些是不同的文件,所以我想使用全局变量。在File1:

def decorator(arg1, arg2):

def real_decorator(function):

def wrapper(*args):

print "i am decorated"

print arg1, arg2

function(*args)

return wrapper

return real_decorator

File2:

def glob(a, b):

global arg1

arg1 = a

global arg2

arg2 = b

@decorator(arg1, arg2) # pass it as 'string' ie('arg1', 'arg2') it PASSES, pass it as i have showed, it FAILS

def print_args(*args):

print 'i am ordinary'

for arg in args:

print arg

File3:

#calling functions

glob(1, 2)

print_args(3,4,5)

======================================

Pass: (when given as string)

i am decorated

arg1 arg2

i am ordinary

3

4

5

======================================

Fail: (when given global var)

Traceback (most recent call last):

File "/User/File2.py", line 19, in

@decorator(arg1, arg2)

NameError: global name 'arg1' is not defined

如果有任何帮助,我将不胜感激。从昨天开始我就一直这样。。!!在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值