我什么时候应该使用 library.function()(对于给定的库及其函数)而不是仅使用 function(),使用 Python 库

When should I use library.function() (for a given library and its function) instead of just function(), using Python Libraries

我对 Python 和面向对象编程还很陌生。我正在执行使用 p5 库的 this tutorial

教程贴出的代码如下:

from p5 import setup, draw, size, background, run
import numpy as np
from boid import Boid

width = 1000
height = 1000

def setup():
    #this happens just once
    size(width, height) #instead of create_canvas

def draw():
    #this happens every time
    background(30, 30, 47)

run()

但是当我尝试 运行 时,会出现各种错误,除非我将 "p5." 放在函数 background()size() 和 [=16= 之前]:

... p5.size()
... p5.background()
... so on

我对其他类似的代码也有过这种困惑;有时在函数之前使用库名称,有时不是,所以上面的代码只是一个例子,表明我对这个话题一无所知。

欢迎提供任何关于我可以在哪里了解的解释或指示。

干杯。

当你这样做时:

from p5 import setup, draw, size, background, run

名称 setupdraw 等被添加到全局命名空间并绑定到适当的库 functions/objects(即来自 p5 库的那些)

但在那之后,当这些行 运行:

def setup():
...
def draw():

名称 setupdraw 已更改为指向您刚刚定义的函数,因此它们不再绑定到 p5 库对象。

由于名称含糊不清,脚本可能 运行 出错。但是,您的脚本应该没问题,因为这些重新定义的名称似乎没有在任何地方使用。

使用 p5. 前缀只会消除混淆并解决问题。

如果库导出通用名称(如 setupdraw 等),或者如果名称与您自己的名称冲突,则最好使用 library. 前缀 /其他图书馆出口的名字。