如何在python中生成和导入模块

时间:2022-11-25 10:13:01
模块是包含了Python定义和语句的文件。文件名由模块名加上后缀“.py”构成。在模块内,模块的名字(作为一个字符串)可以由全局变量__name__的值获知。例如,在Python的搜索路径中用你习惯使用的文本编辑器(Python 1.5.2包含了一个用Tkinter编写的IDLE集成开发环境,MS Windows下有一个PythonWin界面也可以进行Python程序编辑)生成一个名为“fibo.py ”的文件,包含如下内容:
# Fibonacci numbers module
 
def fib(n):    # 输出小于n的Fibonacci序列
    a, b = 0, 1
    while b < n:
        print b,
        a, b = b, a+b
 
def fib2(n): # 返回小于n的Fibonacci序列
    result = []
    a, b = 0, 1
    while b < n:
        result.append(b)
        a, b = b, a+b
    return result

然后进入Python解释程序(在IDLE或PythonWin中可以直接进入解释程序窗口),用如下命令可以导入模块:
>>> import fibo
这不会把模块fibo中的函数的名字直接引入当前的符号表,这只是把模块名fibo引入。可以用模块名来访问其中的函数:
>>> fibo.fib(1000)
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2(100)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'

如果经常使用某个函数可以给它赋一个局部名字:
>>> fib = fibo.fib
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377

这段程序如何在python中文综合环境中运行?谢谢!

5 个解决方案

#1


我补充一点:
如果使用如下方式导入,则可直接使用函数:
>>> from fibo import *
>>> fib(500)
>>> 1 1 2 3 5 8 13 21 34 55 89 144 233 377

另外我也有一个疑问,Python中到底有没有类似C或C++ main函数的入口函数?就算是java也有static void main函数作为整个程序的入口啊!我目前想到的办法就是编一个.py脚本,其中只有一句话exec("相对路径\真正执行的脚本"),这样好像才能通过双击.py来运行我的真正想要执行的程序!

我只是个初学者,大家如果有其他办法,请指点一二,在下不胜感激!

#2


楼上的要求是可以实现的,其实你只要这样就可以了
import 你的真实模块 如果在路径里 你的方式是 
import 路径名.你的真实模块
注意的是在路径下要有一个__init__.py的指示模块,具体你可以参考lib目录下的文件
而且脚本所在目录只能是调用目录的子目录
你的真实模块的主调函数
此外你可以通过大包成exe的方式来双击执行

#3


此外还可以临时添加模块路径到系统搜索路径中完成training(training) 的要求,不过不推荐这样作,而且也没有必要这样作

#4


I got it. Thanks!

#5


把包含python解释器程序的路径添加到系统搜索路径中去。

#1


我补充一点:
如果使用如下方式导入,则可直接使用函数:
>>> from fibo import *
>>> fib(500)
>>> 1 1 2 3 5 8 13 21 34 55 89 144 233 377

另外我也有一个疑问,Python中到底有没有类似C或C++ main函数的入口函数?就算是java也有static void main函数作为整个程序的入口啊!我目前想到的办法就是编一个.py脚本,其中只有一句话exec("相对路径\真正执行的脚本"),这样好像才能通过双击.py来运行我的真正想要执行的程序!

我只是个初学者,大家如果有其他办法,请指点一二,在下不胜感激!

#2


楼上的要求是可以实现的,其实你只要这样就可以了
import 你的真实模块 如果在路径里 你的方式是 
import 路径名.你的真实模块
注意的是在路径下要有一个__init__.py的指示模块,具体你可以参考lib目录下的文件
而且脚本所在目录只能是调用目录的子目录
你的真实模块的主调函数
此外你可以通过大包成exe的方式来双击执行

#3


此外还可以临时添加模块路径到系统搜索路径中完成training(training) 的要求,不过不推荐这样作,而且也没有必要这样作

#4


I got it. Thanks!

#5


把包含python解释器程序的路径添加到系统搜索路径中去。