print
曾经是Python 2中的一个语句,但现在它变成了一个需要Python 3中的括号的函数。
有没有在Python 3中抑制这些括号?也许通过重新定义打印功能?
所以,而不是
print ("Hello stack over flowers")
我可以输入:
print "Hello stack over flowers"
答案 0 :(得分:19)
虽然您需要在Python 3中打印一对括号,但在print
之后不再需要空格,因为它是一个函数。所以这只是一个额外的角色。
如果您仍然发现键入一对括号“不必要地耗费时间”,您可以执行p = print
并以这种方式保存一些字符。因为您可以绑定对函数的新引用而不绑定关键字,所以只能在Python 3中执行此print
快捷方式。
Python 2:
>>> p = print
File "<stdin>", line 1
p = print
^
SyntaxError: invalid syntax
Python 3:
>>> p = print
>>> p('hello')
hello
它会降低您的代码的可读性,但每次打印时都会保存这些字符。
答案 1 :(得分:3)
AHK脚本是个好主意。对于那些感兴趣的人我需要改变一点来为我工作:
public class DayCheckReceiver extends BroadcastReceiver {
private ArrayList<TaskItem> mTaskList;
@Override
public void onReceive(Context context, Intent intent) {
//load
SharedPreferences sharedPrefs = context.getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE);
Gson gson = new Gson();
String json = sharedPrefs.getString(TASKLIST_FILE, null);
Type type = new TypeToken<ArrayList<TaskItem>>() {
}.getType();
mTaskList = gson.fromJson(json, type);
if (mTaskList != null && mTaskList.size() > 0) {
for (int i = 0; i < mTaskList.size(); i++) {
mTaskList.get(i).shiftDayChecks();
mTaskList.get(i).resetTimeLeft();
}
}
//save
SharedPreferences.Editor editor = sharedPrefs.edit();
gson = new Gson();
json = gson.toJson(mTaskList);
editor.putString(TASKLIST_FILE, json);
editor.apply();
}
答案 2 :(得分:2)
没有。这将始终是Python 3中的语法错误。考虑使用2to3
将代码转换为Python 3
答案 3 :(得分:2)
你不能,因为没有括号的唯一方法就是让它成为关键词,就像在Python 2中一样。你不能手动定义一个关键词,所以没有。
答案 4 :(得分:2)
使用Autohotkey制作宏。 AHK是免费的,易于安装。 www.autohotkey.com
您可以将宏指定为alt-p:
var r,
v = new Object();
(function() {
// function 1
function s(sampelString) {
var t = "The given String is "+sampelString;
return (t);
}
r = s("Sample Text");
// Adding SampleFunction to v
v.samepleFuntion = function() {
return s("Sample String Sample String");
//^^^^
}
})();
console.log("The values in r==="+r);
console.log(v.samepleFuntion());
console.log(Object.values(v));
这将使alt-p输出print()并将光标移动到parens内部。
或者,更好的是,直接解决您的问题,您定义一个autoreplace并将其范围限制为当打开的文件具有.py扩展名时:
!p::send print(){Left}
这是一种有保证,无痛,透明的解决方案。
答案 5 :(得分:0)
在Python 3中,print是一个函数,而它曾经是以前版本中的一个语句。正如@holdenweb建议的那样,使用2to3来翻译您的代码。
答案 6 :(得分:0)
在Python 3代码中使用不带括号的print
并不是一个好主意。也不会创建别名等。如果这很麻烦,请使用Python 2。
但是,在交互式shell中,不带括号的print
可能会有用。减少字符数并不是真正的问题,而是避免了每次在调试时想要打印某些东西时都需要按两次Shift键。 IPython使您可以在不使用括号的情况下调用函数,如果以斜杠开头的话:
Python 3.6.6 (default, Jun 28 2018, 05:43:53)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: var = 'Hello world'
In [2]: /print var
Hello world
如果打开autocall
,甚至不需要输入斜杠:
In [3]: %autocall
Automatic calling is: Smart
In [4]: print var
------> print(var)
Hello world
答案 7 :(得分:-1)
我终于找到了正则表达式,可以在旧的Python2示例脚本中更改所有这些。否则,请使用2to3.py。
在Regexr.com上试用,在NP ++(?)中不起作用:
find: (?<=print)( ')(.*)(')
replace: ('$2')
对于变量:
(?<=print)( )(.*)(\n)
('$2')\n
对于标签和变量:
(?<=print)( ')(.*)(',)(.*)(\n)
('$2',$4)\n