我对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
我在其他类似的代码上也感到困惑,有时在函数之前使用了库名,有时没有使用,所以上面的代码只是一个示例,显示了我对该主题的总体无知。
欢迎向我介绍任何有关此方面的解释或说明。
干杯。
[执行时:
from p5 import setup, draw, size, background, run
[名称setup
,draw
等被添加到全局名称空间并绑定到适当的库函数/对象(即,来自p5
库的名称)]
但是之后,当这些行运行时:
def setup():
...
def draw():
名称setup
和draw
被更改为指向您刚刚定义的函数,因此它们不再绑定到p5
库对象。
由于名称不明确,脚本可能会出错。但是,您的脚本应该还可以,因为这些重新定义的名称似乎没有在任何地方使用。
使用p5.
前缀只是为了消除混乱并解决问题。
如果库导出的名称与library.
,setup
等通用名称相同,或者该名称与您自己的名称冲突/其他库导出的名称冲突,请始终使用draw
前缀。