Python 3打印没有括号

时间:2015-08-20 15:53:43

标签: python printing

print曾经是Python 2中的一个语句,但现在它变成了一个需要Python 3中的括号的函数。

有没有在Python 3中抑制这些括号?也许通过重新定义打印功能?

所以,而不是

print ("Hello stack over flowers")

我可以输入:

print "Hello stack over flowers"

8 个答案:

答案 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