2014-04-30 144 views
-1

函数调用变量,我有点新的Python的 - 初学者移动到中间 - 并想知道更多有经验的Python程序员如何命名他们的电话和函数变量。相同功能

具体而言,我喜欢的名字调用变量一样被调用函数的“接收”的变量。同上返回变量。

工作正常,但在那里我可能会遇到的问题,在未来的变化,以global变量之外?

一个例子电话:v_Array = f_InitSpecified2DArray(v_Width,v_Length) 调用的例子或“接收”功能:def f_InitSpecified2DArray(v_Width, v_Length): 和我做同样的回报,以及:return v_Array

def f_InitSpecified2DArray(v_Width, v_Length): 
    v_Array = [v_Width, v_Length] 
    return v_Array 

v_Array = f_InitSpecified2DArray(v_Width,v_Length) 

的问题是:我应该期望产生的任何冲突从函数return内部的名称v_Array的重用以及后来的调用代码中,它被分配到具有相同名称的变量v_Array

谢谢。

回答

1

不,这不会引起您的困难,并且不会引起混淆 - 对于您,您的读者或Python解释器。当然,为了与参数名称不同,混淆不清新名称是不必要的。事实上,你会经常遇到被同时用于命名参数和它的参数相同的名称,如

runner = DocTestRunner(verbose=verbose, optionflags=optionflags) 

它来自doctest.py中(对于Python 3.3)的标准库。

在标准库中搜索此模式<name>=<same_name>(滥用我将在稍后解决的表示法)是有益的,因为它的出现只是您询问的示例。在OS X和Linux,以下命令将显示在标准库与模式的出现所有行(加站点包):

grep -Er --include=*.py '(\b[[:alnum:]]+\b)=\1\b' /path/to/pythonlib 

在Mac上,例如,/path/to/pythonlib为Python 3.3,通常是/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3

此命令显示多少行功能的结构,其中有许多多次出现:

grep -Er --include=*.py '(\b[[:alnum:]]+\b)=\1\b' /path/to/pythonlib | wc -l 

我得到的1129计数,其中包括我的站点包子目录几十个。换句话说,这很常见。

+0

Brian,好东西。感谢您的答案和信息。 –

+0

不客气。你的问题让我好奇,它是多么普遍。现在我们知道 - 非常:) – BrianO

+0

PS在grep正则表达式中的第二个'\ b'是不必要的。 – BrianO

0

阅读PEP 008题为“风格指南Python代码”

你似乎寻找的东西更精确,更系统的,这个我明白,但你会安全很多的努力和困惑,以自己和他人处理您的代码,如果你试图使用PEP 008。

像往常一样,你不会发现它随处可见,但那就是生活。

如果您有关函数名称和变量的问题--PEP 008建议使用小写字母名称,并用下划线分隔单词。

局部变量名是无关紧要的,它真的不要紧,你用什么变量名return

而且不要将移动变量过早计划到全局范围内,你实际上应该朝另一个方向工作。

+0

一月,感谢您的回复。虽然有些新鲜,但我从来没有听说过PEP 008.但是,我主要对人们如何在他们的通话中将他们的变量命名为“狂野”中的功能感到好奇,为什么以及潜在的隐患可能会潜伏。 –

+0

@Raw_Input我看到你的方法非常系统化。 PEP 008正在总结您的问题的答案。你也可以检查许多Python包的源代码 - 请参阅pypi.python.org,选择一些托管在GitHub上并查看代码。样品包装是例如请求,盐,烧瓶,Django,CherryPy ..成千上万。你会发现许多来自PEP 008的改道,但没有人使用你提出的风格。 –

+1

1月,我没有要求提供关于我的变量命名风格的反馈,但是如果在函数调用和函数本身中使用相同的名称可能存在将来的问题。谢谢。 –