如何更好的运行Python解释程序
创始人
2024-06-23 07:11:30
0

如果突然进行退出Python解释程序然后再进入,就会出现原有的函数和变量就丢失了,所以,如果需要写长一点的程序,最好用一个文本编辑程序为解释程序准备输入,这样可以减少一些错误的发生。

然后以程序文件作为输入来运行Python解释程序,这称为准备脚本(script)。当你的程序变长时,最好把它拆分成几个文件以利于维护。你还可能想在几个程序中都使用某个很方便的函数。

但又不想把函数定义赋值到每一个程序中。为了支持这些,Python有一种办法可以把定义放在一个文件中然后就可以在一个脚本中或交互运行中调用。这样的文件叫做一个模块;

模块中的定义可以导入其它模块或主模块(主模块指在解释程序顶级执行的脚本或交互执行的程序所能访问的变量集合)。模块是包含了Python定义和语句的文件。文件名由模块名加上后缀“.py”构成。在模块内,模块的名字(作为一个字符串)可以由全局变量__name__的值获知。

例如,在Python的搜索路径中用你习惯使用的文本编辑器(Python 1.5.2包含了一个用Tkinter编写的IDLE集成开发环境,MS Windows下有一个PythonWin界面也可以进行Python程序编辑)生成一个名为“fibo.py ”的文件,包含如下内容:

  1. # Fibonacci numbers module  
  2.    
  3. def fib(n):    # 输出小于n的Fibonacci序列  
  4.     a, b = 0, 1  
  5.     while b < n: 
  6.         print b,  
  7.         a, bb = b, a+b  
  8.    
  9. def fib2(n): # 返回小于n的Fibonacci序列  
  10.     result = []  
  11.     a, b = 0, 1  
  12.     while b < n: 
  13.         result.append(b)  
  14.         a, bb = b, a+b  
  15.     return result  

然后进入Python解释程序(在IDLE或PythonWin中可以直接进入解释程序窗口),用如下命令可以导入模块:

  1. >>> fibo.fib(1000)  
  2. 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987  
  3. >>> fibo.fib2(100)  
  4. [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]  
  5. >>> fibo.__name__  
  6. 'fibo'  

这不会把模块fibo中的函数的名字直接引入当前的符号表,这只是把模块名fibo引入。可以用模块名来访问其中的函数:

  1. >>> from fibo import fib, fib2  
  2. >>> fib(500)  
  3. 1 1 2 3 5 8 13 21 34 55 89 144 233 377  
  4.  
  5. 这不会把模块名导入使用者的符号表中(例如,上面例子中fibo就没有定义)。   
  6.  
  7. 还有一种办法可以导入一个模块中定义的所有名字:   
  8.  
  9. >>> from fibo import *  
  10. >>> fib(500)  
  11. 1 1 2 3 5 8 13 21 34 55 89 144 233 377  

模块除了可以包含函数定义之外也可以包含可执行语句。这些可执行语句用来初始化模块,它们只在模块第一次被导入时执行。每个模块有自己私有的符号表,这个私有符号表对于模块中的所有函数而言却是它们的全局符号表。

因此,模块作者可以在模块中使用全局变量而不需担心与模块用户的全局变量冲突。另一方面,如果你有把握的话也可以用访问模块中函数的格式,即modname.itemname的方法来修改模块中的全局变量。模块可以导入其它模块。我们通常把所有的导入语句放在模块(或脚本)的开始位置,这不是规定要求的。导入的模块名放入模块的全局符号表中。

【编辑推荐】

  1. 有关Python系统文件进行介绍指导
  2. 如何正确的使用Python函数
  3. 对Python 构建工具进行详细介绍分析
  4. PythonAndroid浅析Python优势所在
  5. 如何使用Python模块解析配置文件?

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...