如何突出显示对对象方法和用户创建函数的调用?(升华文本,python)

如何突出显示对对象方法和用户创建函数的调用?(升华文本,python),python,syntax-highlighting,sublimetext3,Python,Syntax Highlighting,Sublimetext3,我尝试同时使用Python3/PythonImproved.tmLanguage语法,但出于某种原因,这两种语法都不能使用。在大多数编辑器中,这些变量的颜色应该与变量的颜色相同吗 以下是一些随机函数的屏幕截图: 下面是我希望它看起来的样子: 总而言之,我只想突出显示用括号调用的所有内容,如function()或object.method()。在Python中,您声明的所有变量都是对象的绑定。这意味着如果声明变量varA=1,则将创建对象1,并且名称varA将绑定到此对象。当您声明nextva

我尝试同时使用Python3/PythonImproved.tmLanguage语法,但出于某种原因,这两种语法都不能使用。在大多数编辑器中,这些变量的颜色应该与变量的颜色相同吗

以下是一些随机函数的屏幕截图:

下面是我希望它看起来的样子:


总而言之,我只想突出显示用括号调用的所有内容,如function()或object.method()。在Python中,您声明的所有变量都是对象的绑定。这意味着如果声明变量
varA=1
,则将创建对象
1
,并且名称
varA
将绑定到此对象。当您声明next
varB=1
时,
varB
将绑定到与
varA
相同的对象。您可以使用内置函数
id
进行检查,该函数返回变量绑定到的对象的id:
id(varA)==id(varB)#True

函数和实例方法也是如此。如果你声明一个函数

def foo():
    print 'foo'
然后将创建一个表示该函数的对象。同时,名称
foo
绑定到该对象。声明
bar=foo
将允许通过bar调用先前创建的函数对象:
bar()
将产生与
foo()
相同的输出(并调用或更好地使用内存中完全相同的对象)

例如,这是相似的。声明类

class Foo:
    def foo(self):
        print 'foo'
将创建所需的对象,并将
Foo
绑定到类,并将
Foo
绑定到该类的实例方法。声明
Foo.bar=Foo.Foo
将允许

>>> f = Foo()
>>> f.foo()
foo
>>> f.bar()
foo
>>> Foo.foo
<unbound method Foo.foo>
>>> Foo.bar
<unbound method Foo.foo>
>>> f.foo
<bound method Foo.foo of <__main__.Foo instance at 0x7fd68e846fc8>>
>>> f.bar
<bound method Foo.foo of <__main__.Foo instance at 0x7fd68e846fc8>>
>f=Foo()
>>>f.foo()
福
>>>f.bar()
福
>>>Foo.Foo
>>>美食酒吧
>>>福福
>>>酒吧

因此,python中的每个“变量”实际上都是名称与对象的绑定,这适用于所有内容,包括函数和实例方法。这就是为什么它们在大多数编辑器中具有相同(缺少)的语法突出显示。

是的,这是预期的。在Python中,您声明的所有变量都是对象的绑定。这意味着如果声明变量
varA=1
,则将创建对象
1
,并且名称
varA
将绑定到此对象。当您声明next
varB=1
时,
varB
将绑定到与
varA
相同的对象。您可以使用内置函数
id
进行检查,该函数返回变量绑定到的对象的id:
id(varA)==id(varB)#True

函数和实例方法也是如此。如果你声明一个函数

def foo():
    print 'foo'
然后将创建一个表示该函数的对象。同时,名称
foo
绑定到该对象。声明
bar=foo
将允许通过bar调用先前创建的函数对象:
bar()
将产生与
foo()
相同的输出(并调用或更好地使用内存中完全相同的对象)

例如,这是相似的。声明类

class Foo:
    def foo(self):
        print 'foo'
将创建所需的对象,并将
Foo
绑定到类,并将
Foo
绑定到该类的实例方法。声明
Foo.bar=Foo.Foo
将允许

>>> f = Foo()
>>> f.foo()
foo
>>> f.bar()
foo
>>> Foo.foo
<unbound method Foo.foo>
>>> Foo.bar
<unbound method Foo.foo>
>>> f.foo
<bound method Foo.foo of <__main__.Foo instance at 0x7fd68e846fc8>>
>>> f.bar
<bound method Foo.foo of <__main__.Foo instance at 0x7fd68e846fc8>>
>f=Foo()
>>>f.foo()
福
>>>f.bar()
福
>>>Foo.Foo
>>>美食酒吧
>>>福福
>>>酒吧
因此,python中的每个“变量”实际上都是名称与对象的绑定,这适用于所有内容,包括函数和实例方法。这就是为什么它们在大多数编辑器中都有相同(缺少)的语法高亮显示。

我曾经找出这些调用的作用域,它们是相同的function-call.generic.python调用,实际上与.tmLanguage中的对象实例/变量不同,尽管没有一个主题文件使用这个作用域

因此,我将此规则添加到我的配色方案文件(.tmTheme):


名称
通用函数调用
范围
meta.function-call.generic.python
设置
前景
#66D9EF
我曾经找出这些调用的范围,它们都是与.tmLanguage中的对象实例/变量实际不同的function-call.generic.python调用,尽管没有一个主题文件使用这个范围

因此,我将此规则添加到我的配色方案文件(.tmTheme):


名称
通用函数调用
范围
meta.function-call.generic.python
设置
前景
#66D9EF

我是《Python改进版》的作者。Sublime的默认Monokai主题缺乏突出显示PI中许多作用域的能力(以及其他一些语言——这是非常简单的)。我的另一个项目是,包含PI所有新作用域的规则,以及许多其他语言的作用域,包括内置和来自包控制的第三方。如果你不喜欢这些颜色,我会尽量保持组织有序,这样你就可以随心所欲地调整规则。如果您有任何问题,请随时向或提交问题。

我是Python改进版的作者。Sublime的默认Monokai主题缺乏突出显示PI中许多作用域的能力(以及其他一些语言——这是非常简单的)。我的另一个项目是,包含PI所有新作用域的规则,以及许多其他语言的作用域,包括内置和来自包控制的第三方。如果你不喜欢这些颜色,我会尽量保持组织有序,这样你就可以随心所欲地调整规则。如果您有任何疑问或问题,请随时向或提交问题。

您是否尝试过了解SublimateText样式是如何定义的,哪些挂钩可用于格式化等。?我在这里安装的编辑器(Atom、IDLE、PyCharm和VS2013+PTV)都没有