python - 模块

root@learning ~]# cat gcdfunction.py   #写一个模块,并调用此模块
def gcd(n1,n2):  #之前用过的求最大公约数的代码
    gcd = 1
    k = 2
    while k<= n1 and k<=n2:
        if n1%k == 0 and n2 % k == 0:
            gcd = k
        k = k + 1
    return gcd
[root@learning ~]# cat module.py  #完整代码
from gcdfunction import gcd   #调用模块

n1 = eval(input("enter a number:"))
n2 = eval(input("enter a number:"))
print ("the greatest common divisor for",n1, 'and',n2,"is",gcd(n1,n2))
[root@learning ~]# python3.11 module.py
enter a number:66
enter a number:99
the greatest common divisor for 66 and 99 is 33

参考信息:
在Linux中,Python会在一系列目录中查找模块。这些目录包括:

  1. 当前工作目录:Python首先在运行脚本的当前工作目录中搜索模块。

  2. 环境变量PYTHONPATH中定义的目录:PYTHONPATH是一个包含一个或多个目录路径的环境变量,Python会在这些目录中搜索模块。

  3. Python的默认安装路径:Python会在默认安装路径中搜索模块,这个路径通常是/usr/lib/pythonX.Y(其中X和Y代表Python的主版 本和次版本号)。

当然,你也可以通过在代码中使用sys.path.append(path)来添加其他搜索路径。

至于第二个问题,任意目录下的模块并不一定都可以被调用。在使用import语句调用模块时,Python只会搜索特定目录中的模块。如果你把自己编写的模块放在了Python搜索路径之外的目录中,你需要通过修改sys.path或设置PYTHONPATH来将该目录添加到Python的搜索路径中,这样才能顺利地调用该模块。

[root@learning ~]# cat timelogfunction.py #一个使用装饰器,记录运行时间,和输出日志的代码,
import time
import logging
logging.basicConfig(filename = "/tmp/123.log",level = logging.INFO)

def log(f):   #可以被调用的log模块
    def wrapper():
        logging.info("%s is running" % f.__name__)
        return f()
    return wrapper

def print_run_time(f):  #可以被调用的运行时间模块
    def wrapper(*args, **kwargs):
        local_time = time.time()
        f(*args, **kwargs)
        print('hanshu[%s]zhixingshijian is %.2f miao' % (f.__name__, time.time() - local_time))
        #f(*args, **kwargs)

    return wrapper

#@print_run_time
def test():   #可以忽略
    time.sleep(0.5)
    print('123')

#test()
[root@learning ~]# cat test3.py   #主程序
import timelogfunction   #调用上面写的模块
import time
@timelogfunction.print_run_time
def f():
    print("hello, test script")
    s = 1
    for i in range (1, 100):
        s += i
    print(s)
    time.sleep(0.2)

f()
[root@learning ~]# python3.11 test3.py   #运行结果 
hello, test script
4951
hanshu[f]zhixingshijian is 0.20 miao

你可能感兴趣的:(python,开发语言)