作者:just路人周 | 来源:互联网 | 2024-11-17 11:53
本示例通过绘制蟒蛇图形,帮助读者理解Python的模块化编程思想。Python的名称来源于“蟒蛇”,因此用Python绘制蟒蛇图形非常有趣。
以下是“Python蟒蛇绘制”的代码及效果:
# e2.1DrawPython.py
import turtle
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40, 80)
turtle.circle(-40, 80)
turtle.circle(40, 80 / 2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2 / 3)

此示例与之前的示例有两个显著不同点。首先,该程序没有使用显式的用户输入输出,即没有使用`input()`和`print()`函数;其次,程序中的大多数代码都是`.()`形式,没有赋值语句。
`.()`是Python编程中的一种典型表达形式,表示调用对象``的方法`()`,或者调用函数库``中的函数`()`。
示例代码中使用了`turtle`库(中文译为“乌龟”)来绘制图形,并在第二行通过`import`关键字引用了这个库。
import turtle
从第3行到第16行,代码调用了`turtle`库中的多个函数来绘制蟒蛇图形,所有被调用的函数都使用了`.()`形式。这种通过使用函数库并利用库中函数进行编程的方法是Python语言的重要特点,称为“模块化编程”。
使用`import`引用函数库有两种方式,但对函数的使用方式略有不同。
第一种引用库函数的方法如下:
`import <库名>`
此时,程序可以调用库中的所有函数,使用库中函数的格式如下:
`<库名>.<函数名>(<函数参数>)`
第二种引用函数库的方法如下:
`from <库名> import <函数名, 函数名..., 函数名>`
`from <库名> import *` # 其中,`*`是通配符,表示所有函数
此时,调用该库的函数时不再需要使用库名,直接使用如下格式:
`<函数名>(<函数参数>)`
采用第二种库引用方式修改示例代码,完成Python蟒蛇绘制,代码如下:
# e2.2DrawPython.py
from turtle import *
setup(650, 350, 200, 200)
penup()
fd(-250)
pendown()
pensize(25)
pencolor("purple")
seth(-40)
for i in range(4):
circle(40, 80)
circle(-40, 80)
circle(40, 80 / 2)
fd(40)
circle(16, 180)
fd(40 * 2 / 3)
示例代码2.2和2.1的运行结果相同,不同的是调用`turtle`库中函数时不再采用`.()`方式,而是直接使用函数名。由于该示例中只用到了`turtle`库中的`setup()`、`penup()`、`fd()`、`pendown()`、`pensize()`、`pencolor()`、`seth()`、`circle()`等8个函数,第2行的`import`语句也可以写成如下形式:
from turtle import setup, penup, fd, pendown, pensize, pencolor, seth, circle
两种函数库引用方式各有优点。第一种采用`.()`方式调用库中函数,能够显式标明函数来源,在引用较多库时代码可读性更好。第二种利用`from`关键字直接引用库中函数,可以使代码更加简洁,在只引用一个库的情况下效果更好。
需要注意的是,第一种引用方式下,Python解释器将`.`整体作为函数名。当采用第二种方式时,Python解释器将``作为函数名。这可能导致函数名冲突,假设用户已经定义了一个函数``,库中的函数名``将会与用户自定义的函数名冲突。由于要求函数名命名唯一,当函数名冲突时,Python解释器会以最近的函数定义为准。为避免可能的命名冲突,最好使用第一种库引用方式,使用`.()`方式调用库函数。