我试图找到一个很好的来源,解释为什么global在python(以及一般的编程)中使用被认为是不好的做法.有人可以指点我或解释一下吗?
如果我有一个函数(在Python 2.5.2中),如:
def sample_func():
a = 78
b = range(5)
#c = a + b[2] - x
Run Code Online (Sandbox Code Playgroud)
我的问题是:
提前致谢.
编辑:
每个人都在要求用例.但这是一个奇怪的情况.(别怪我,我没有创造它).这是场景:
我有一个非常基本的问题.
假设我调用一个函数,例如,
def foo():
x = 'hello world'
Run Code Online (Sandbox Code Playgroud)
如何让函数以这样的方式返回x,我可以将它用作另一个函数的输入或者在程序体内使用变量?
当我使用return并在另一个函数中调用该变量时,我得到一个NameError.
假设我有一个类似的功能f(a, b, c=None).目的是调用函数f(*args, **kwargs),然后构造一组新的args和kwargs,这样:
f(1, 2),我应该能够获得元组(1, 2, None)和/或字典{'c': None}.f(1, 100000, 3)并且函数确实if b > 500: b = 5修改了局部变量,我应该能够获得元组(1, 5, 3).这里的目的是创建一个完成函数工作的装饰器.原始函数充当为实际执行设置数据的前导码,装饰器完成作业.
编辑:我正在添加一个我正在尝试做的例子.它是一个为其他类创建代理的模块.
class Spam(object):
"""A fictional class that we'll make a proxy for"""
def eggs(self, start, stop, step):
"""A fictional method"""
return range(start, stop, step)
class ProxyForSpam(clsproxy.Proxy):
proxy_for = Spam
@clsproxy.signature_preamble
def eggs(self, start, stop, step=1):
start = max(0, start)
stop = min(100, stop) …
Run Code Online (Sandbox Code Playgroud) 我很难将在主函数中输入时提示的用户名传递到下一个函数中的字符串中。
我已经构建了一个函数程序,该函数程序将预定名称传递给下一个函数字符串消息。但是,既然我已经尝试提高它的速度并使用输入法,那么我就很难将它传递到下一个函数中的字符串消息中。
def main():
someMessage = input("Enter your name:")
return someMessage
def buildGreeting (someMessage):
message = "Greetings " +input(someMessage)+ " you have been hacked! This message will self destruct in ten seconds!"
return message
def printMessage(aMessage):
print(aMessage)
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
我要说“问候雷夫,您已被黑!此消息将在十秒钟内自毁!”
这是我目前的结果。它提示输入我的名字,然后再无其他操作。这是我运行程序时读取的内容。
输入您的名字:Leif
流程结束,退出代码为0
为什么print(平方)返回0而不是100?
我认为从函数返回后 - 变量的平方值将被赋值给具有相同名称的全局变量?
squared = 0
def square(n):
"""Returns the square of a number."""
squared = n**2
print "%d squared is %d." % (n, squared)
return squared
square(10)
print(squared)
Run Code Online (Sandbox Code Playgroud)
收益:
我试图将一个变量从一个函数传递给一个类.示例代码如下:
def hello(var):
return var
class test():
def __init__(self):
pass
def value(self):
print var
hello(var)
test = test()
test.value()
Run Code Online (Sandbox Code Playgroud)
我想var进入课堂test().
谢谢你的帮助.