我应该何时使用library.function()(对于给定的库及其功能),而不仅仅是使用Python库的function()

问题描述 投票:0回答:1

我对Python和面向对象编程非常陌生。我正在执行一个使用p5库的教程,示例在下面的链接中:

https://medium.com/better-programming/boids-simulating-birds-flock-behavior-in-python-9fff99375118

本教程使用p5库的功能,并且其发布的代码如下:

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()和run()之前:

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

我在其他类似的代码上也感到困惑,有时在函数之前使用了库名,有时没有使用,所以上面的代码只是一个示例,显示了我对该主题的总体无知。

欢迎向我介绍任何有关此方面的解释或说明。

干杯。

python oop libraries
1个回答
2
投票

[执行时:

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

[名称setupdraw等被添加到全局名称空间并绑定到适当的库函数/对象(即,来自p5库的名称)]

但是之后,当这些行运行时:

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

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

由于名称不明确,脚本可能会出错。但是,您的脚本应该还可以,因为这些重新定义的名称似乎没有在任何地方使用。

使用p5.前缀只是为了消除混乱并解决问题。

如果库导出的名称与library.setup等通用名称相同,或者该名称与您自己的名称冲突/其他库导出的名称冲突,请始终使用draw前缀。

© www.soinside.com 2019 - 2024. All rights reserved.