擅长:python、mysql、java
<p>传递一个<code>name</code>参数,然后在函数中使用<code>{}</code>初始化{<cd1>},就像没有传递<code>name</code>参数一样。在</p>
<pre><code>def osinfo(url, delimiter, name=None):
ufile = urllib2.urlopen(url)
ufile.readline()
name = {} # you define name here as empty dict
for lines in ufile.readlines():
lines = lines.rstrip("\n")
fields = lines.split(delimiter)
m = re.match(r'(?i)(^[a-z0-9|\.|-]+)', fields[1].lower())
hostname = m.group()
if hostname in control:
name[hostname] = lines
print "The length of osdata inside the function:", len(name)
</code></pre>
<p>两个意见</p>
<ul>
<li><p>如果要修改字典,请将其作为参数传递,而不是其名称</p></li>
<li><p>有一点你说得对:在Python中,如果作为参数传递的对象是可变的,那么位于外部范围内并作为参数传递的变量可以被函数修改(就像它是通过引用传递的,尽管对对象的引用是通过值传递的,<a href="https://stackoverflow.com/questions/986006/python-how-do-i-pass-a-variable-by-reference">see here</a>)</p></li>
</ul>