如何返回一个函数的输出不同于打印?

在我之前的问题中 ,Andrew Jaffe写道: 除了所有其他提示和技巧外,我认为你错过了一些至关重要的东西:你的函数实际上需要返回一些东西。 当你创buildsplittext() autoparts()或者splittext() ,这个想法就是这个函数可以调用,它可以(也应该)返回。 一旦你找出你想要的函数的输出,你需要把它放在一个return语句中。 def autoparts(): parts_dict = {} list_of_parts = open('list_of_parts.txt', 'r') for line in list_of_parts: k, v = line.split() parts_dict[k] = v print(parts_dict) >>> autoparts() {'part A': 1, 'part B': 2, …} 这个函数创build一个字典,但是它不返回任何东西。 但是,由于我添加了print ,当我运行该function时,会显示该function的输出。 return东西和print它有什么区别?

后增和前增概念?

我不明白后缀和前缀增量或减量的概念。 任何人都可以提供更好的解释?

在“foreach”循环中修改列表的最好方法是什么?

C#/ .NET 4.0中的一个新function是,您可以在foreach更改枚举而不会发生exception。 请参阅Paul Jackson的博客条目“并发的有意义的副作用:在枚举中删除项目”以获取有关此更改的信息。 什么是最好的方法来做到以下几点? foreach(var item in Enumerable) { foreach(var item2 in item.Enumerable) { item.Add(new item2) } } 通常我使用IList作为caching/缓冲直到foreach结束,但有没有更好的方法?

如何在循环中使用sscanf?

有一个很好的方式来循环sscanfstring? 比方说,我有一个string,看起来像这样: char line[] = "100 185 400 11 1000"; 我想打印这个总和。 我真的想写的是这样的: int n, sum = 0; while (1 == sscanf(line, " %d", &n)) { sum += n; line += <number of bytes consumed by sscanf> } 但没有干净的方式来从sscanf获取这些信息。 如果它返回了消耗的字节数,那就很有用。 在这种情况下,可以使用strtok ,但是能够写一些与stdin相似的东西是很好的: int n, sum = 0; while (1 == scanf(" %d", &n)) { sum += […]

有没有办法用typesvariables引用当前types?

假设我试图编写一个函数来返回当前types的一个实例。 有没有办法让T指的是确切的子types(所以T应该指B中的B )? class A { <T extends A> foo(); } class B extends A { @Override T foo(); }

Android BroadcastReceiver启动时 – 活动在后台时保持运行

我正在监视传入的短信。 我的应用程序与BroadcastReceiver完美配合。 然而,它是从一个活动工作,并希望保持BroadcastReceiver运行的时间(而不是只是当我的活动正在运行)。 我怎样才能做到这一点? 我已经查看了BroadcastReceiver的生命周期,但文档中提到的所有内容都是生命周期仅限于onReceive方法,而不是保持BroadcastReceiver检查传入SMS的生命周期。 我怎样才能使这个持久? 谢谢

静态类成员上未parsing的外部符号

很简单地说: 我有一个主要由静态公共成员组成的类,所以我可以将类似的函数组合在一起,而这些函数仍然需要从其他类/函数中调用。 无论如何,我已经在我的类的公共范围中定义了两个静态无符号字符,当我尝试在同一个类的构造函数中修改这些值时,编译时出现“未parsing的外部符号”错误。 class test { public: static unsigned char X; static unsigned char Y; … test(); }; test::test() { X = 1; Y = 2; } 我是C ++新手,所以对我来说很简单。 为什么我不能这样做?

在C#中使用带默认命名空间的Xpath

我有一个默认名称空间的XML文档。 我正在使用XPathNavigator来使用Xpathselect一组节点,如下所示: XmlElement myXML = …; XPathNavigator navigator = myXML.CreateNavigator(); XPathNodeIterator result = navigator.Select("/outerelement/innerelement"); 我没有得到任何结果:我假设这是因为我没有指定命名空间。 我如何在我的select中包含命名空间?

C ++函数参数的评估顺序

如果我们有三个function(foo,bar和baz),就像… foo(bar(), baz()) baz之前有没有用C ++标准来保证吧?

Javascript循环中的事件处理程序 – 需要closures?

我正在处理一些我从其他人手中接过的html和Javascript代码。 该页面每十秒钟重新载入一个数据表(通过asynchronous请求),然后使用一些DOM代码重新构build表。 有问题的代码看起来像这样: var blah = xmlres.getElementsByTagName('blah'); for(var i = 0; i < blah.length; i++) { var td = document.createElement('td'); var select = document.createElement('select'); select.setAttribute("…", "…"); select.onchange = function() { onStatusChanged(select, callid, anotherid); }; td.appendChild(select); } 但是,如果为<select>元素触发onchange事件,则表中的每个<select>都会将相同的值传递给onStatusChanged()方法(我已经validation了在循环的每次迭代中, callid和anotherid正在被赋予新的,不同的值)。 我怀疑这是发生,因为我设置事件处理程序的性质,使用select.onchange = function()语法。 如果我理解这是如何工作的,那么这个语法将onchange事件的闭包设置为一个引用这两个引用的函数,这个引用最终具有在循环的最后一次迭代中设置的最终值。 当事件触发时, callid和anotherid引用的值是最后一次迭代中设置的值,而不是单个迭代中设置的值。 有没有办法,我可以复制我传递给onStatusChanged()参数的值? 我已经改变了标题,以更好地反映问题和接受的答案。