我对Python有点新手 - 初学者转向中级 - 并且想知道更有经验的Python程序员如何命名他们的调用和函数变量。
具体来说,我喜欢将呼叫变量命名为被叫函数' s' receive'变量。同样返回变量。
工作正常,但是在将来将变量更改为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)
问题是:我希望在函数v_Array
内部以及稍后在调用代码中重用名称return
会导致任何冲突,并将其分配给具有相同名称的变量{{1 }}?
感谢。
答案 0 :(得分:1)
不,这不会给您,您的读者或Python解释器带来困难,也不会造成混淆。当然,与仅仅与参数名称不同的新名称相比,它不那么令人困惑,这是不必要的。实际上,您经常会遇到与命名参数及其参数同时使用的相同名称,如
runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
来自标准库中的doctest.py(适用于Python 3.3)。
在标准库中搜索这种模式是有益的,<name>=<same_name>
(滥用符号,我会在一瞬间纠正),因为它的出现只是你要问的例子。在OS X和Linux上,以下命令将显示标准库(以及site-packages)中出现该模式的所有行:
grep -Er --include=*.py '(\b[[:alnum:]]+\b)=\1\b' /path/to/pythonlib
例如,在Mac上,Python 3.3的/path/to/pythonlib
通常为/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,其中包括我的site-packages子目录中的几十个。换句话说,这很常见。
答案 1 :(得分:0)
阅读PEP 008标题为&#34; Python Code样式指南&#34;
您似乎在寻找更精确,更系统的内容,我对此表示赞赏,但如果您尝试遵循PEP 008,那么您将为自己和处理代码的其他人付出很多努力和困惑。
像往常一样,你不会发现它随处可见,但这就是生活。
关于函数名称和变量的问题 - PEP 008建议使用小写名称,单词用下划线分隔。
局部变量名称无关紧要,用于return
的变量名称无关紧要。
并且不要过早地将变量转移到全局范围,实际上你应该在另一个方向工作。