这个例子主要是用于理解Python的“模块编程思想”。

Python直接翻译是“蟒蛇”的意思,因此,利用Python绘制图形程序绘制一条蟒蛇十分有趣。

实例代码2.1是“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)

        实例2.1与实例1.1有两个显著的不同。第一,这个程序没有使用显式的用户输入输出,即没有input()函数和print()函数;第二,这个程序绝大多数代码都是<a>.<b>()形式,代码行中没有赋值语句。

        <a>.<b>()是Python编程的一种典型表达形式,它可以表示调用一个对象<a>的方法<b>(),也可以表示调用一个函数库<a>中的函数<b>()。

        实例代码2.1中使用了用于绘制图形的turtle库,并在第二行中通过保留字import引用这个函数库。

import turtle

         实例代码2.1的第3行到第16行调用了turtle(汉语翻译为“乌龟”)库中的若干函数来绘制蟒蛇图形,所有被调用函数都使用了<a>.<b>()形式。这种通过使用函数库并利用库中函数进行编程的方法是Python语言最重要的特点,称为“模块编程”。

        使用import引用函数库有两种方式,但对函数的使用方式略有不同。

第一种引用库函数的方法如以下:

                        import <库名>

        此时,程序可以调用库名函数中的所有函数,使用库中函数的格式如下:

                <库名>.<函数名>(<函数参数>)

第二种引用函数库的方法如下:

                from <库名> import <函数名,函数名...,函数名>

                from <库名> import *        #其中,*是通配符,表示所有函数

        此时,调用该库的函数时不在需要使用库名,直接使用如下格式:

                <函数名>(<函数参数>)

采用第二种库引用方式修改实例代码2.2完成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库中函数时不再采用<a>.<b>()方式,而是直接使用函数名。由于该实例中只用到了turtle库中的steup()、penup()、fd()、pendown()、pensize()、pencolor()、seth()、circle()等8个函数,第2行的import语句也可以写成如下形式:

from turtle import steup,penup,fd,pendown
from turtle import pensize,pencolor,seth,circle

        l两种函数库引用方式各有优点。第一种采用<a>.<b>()方式调用库中函数,能够显式标明函数来源,在引用较多库时代码可读性更好。第二种利用保留字直接引用库中函数,可以使代码更加简洁,在这种只引用一个库的情况下效果更好。

需要注意的是:第一种引用方式,Python解释器将<a>.<b>整体作为函数名。当采用第二种方式时,Python解释器将<b>作为函数名。这可能产生一种情况,假设用户以及定义了一个函数<b>,库中的函数名<b>将会与用户自定义的函数名冲突。由于要求函数名命名唯一,所以,当函数名冲突时Python解释器会以最近的函数定义为准。为避免可能的命名冲突,最好使用第一种库引用方式,使用<a>.<b>()方式调用库函数。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐