我将参加一个Python研讨会,在我的大学Python中教一些初级程序员.
我正在寻找一种方法来修改Python交互式会话的默认行为,以便表达式不会自动打印出结果.例如,进行以下交互式会话:
wil@calcifer:~$ python
Python 2.7.3 (default, Aug 1 2012, 05:16:07)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 5
>>> y = 7
>>> x + y
12
>>> first_name = "Test"
>>> last_name = "Person"
>>> first_name + last_name
'TestPerson'
>>>
Run Code Online (Sandbox Code Playgroud)
这将强制使用该print语句以避免以后混淆.这并不重要,但我很惊讶我无法在任何地方找到任何设置.
我可以事先预先配置机器,所以任何解决方案都可以.有谁知道这是否可能,或者交互式会话的哪些变化会产生这种效果?
我在交互式shell中测试了一些Django功能
这是我尝试探测这些对象,请注意最后的Nones列表
>>> [print(foo) for foo in CharacterSkillLink.objects.all() if foo.speciality]
Streetwise (Street Countdown) Roran
[None]
Run Code Online (Sandbox Code Playgroud)
并且具有更正统的列表理解:
>>> [print(foo) for foo in range(1,10)]
1
2
3
4
5
6
7
8
9
[None, None, None, None, None, None, None, None, None]
Run Code Online (Sandbox Code Playgroud)
九个Nones,都是连续的.
我为什么要这样做?
假设我编写了一个必须使用该imp模块的 python 包,并且我的包是“TestModule”,如下所示:
import imp
import pip
import sys
def update_and_reload(module, *args, **kwargs):
pip.main(['install', module, '--upgrade', '--user'])
return imp.reload(module)
Run Code Online (Sandbox Code Playgroud)
当我import TestModule在终端中执行此操作时,我收到了有关 的待弃用警告imp。我如何使imp的警告不发生/过滤掉?
根据微软的说法,我们不能在它自己的 powershell ISE 控制台中运行像 python 这样的交互式控制台。根据一些消息来源,它在后台运行。我们可以在前台运行相同的python 解释器吗?
有时我想检查表达式的逻辑值,所以我在Python(或IPython)中键入它并得到结果:
>>> a==3
True
Run Code Online (Sandbox Code Playgroud)
但在其他情况下它不会那样工作(这里字符串是None):
>>> string
>>>
Run Code Online (Sandbox Code Playgroud)
所以我检查逻辑值如下:
>>> if string: print('True')
...
>>>
Run Code Online (Sandbox Code Playgroud)
是否有更短的方法来检查表达式的逻辑值?任何返回True或False的函数与在if -condition中计算的函数相同?
当我使用Python交互式解释器时,我经常发现自己这样做:
>>> a = "starting value"
>>> foo(a)
"something I don't want"
>>> bar(a)
"what I wanted"
>>> a = bar(a)
Run Code Online (Sandbox Code Playgroud)
有没有办法做到:
>>> bar(a)
"what I wanted"
>>> a = thing_from_before
Run Code Online (Sandbox Code Playgroud)
也就是说,有没有办法引用我运行的最后一个命令打印出来的变量?