我有以下示例:
def get_max_close(symbol): # Example 1 df = pd.read_csv("../../ml4t/data/{}.csv".format(symbol)) get_max = df["Close"].max() res = {symbol: float(get_max)} return res if __name__ == "__main__": symbol = ["AAPL", "IBM"] # Example 2 max_close = {"Max": [get_max_close(s) for s in symbol]} print max_close
我的示例1显示了以下问题:
This inspection detects shadowing names defined in outer scopes
示例2是具有相同名称的外部范围变量.我不想更改代码,我记得在其中一个PEP中读取我可以添加_
到此变量以使其工作.
我还记得读过那些_
事情的放置(就像骆驼套管在功能上的重要性一样).
我相信_
在变量名之前放置(即._symbol
)是实现这一目的的正确方法.之后放置它将专门用于当我有一个与内置函数同名的变量(即.dict_
)时.
我把这两个混在了一起吗?你能告诉我相关pep的网址吗?https://www.python.org/dev/peps/ ...
这里没有什么需要解决的.这只是来自IDE的警告,而不是Python.
IDE指出该名称symbol
既用作全局(在__name__ == '__main__'
块中),也用作get_max_close()
函数中的本地名称.这很好,而不是你需要关注的事情.
该建议的目的是使用Python的本身,所提供的名称内置的名称,如list
,id
,str
或all
.然后,您可以将变量重命名为id_
或all_
不存在尝试使用内置的风险.这不是这里的情况.
如果您使用了该名称_symbol
,那么按照惯例,您发出的信号表明该名称被认为是您的实现的私有名称(例如,使用您的代码的任何人都不应该依赖于未来版本中以相同形式存在的名称).
你可以使用不同的名字也干脆,你不具备使用symbol_
.我只是坚持symbol
,这是一个完全有效的本地名称,IDE在这里过于热心.
您正在考虑的PEP是PEP 8 - Python代码样式指南,在命名样式部分中指出:
_single_leading_underscore
:弱"内部使用"指标.例如from M import *
,不会导入名称以下划线开头的对象.
single_trailing_underscore_
:用于避免与Python关键字冲突的约定,例如Tkinter.Toplevel(master, class_='ClassName')