首页 > 编程语言 >PYTHON 模块

PYTHON 模块

时间:2022-12-16 18:44:45浏览次数:56  
标签:__ trace lib PYTHON 模块 import calc

1.1 模块

模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。

1.2 导入模块

import 模块1, 模块2, ...

定义一个模块:calc.py,里面放一个函数。

# filename: calc.py

def calc_sum(*args) -> float:
    tmp = 0
    for value in args:
        tmp += value
    return tmp

用import导入

# filename: main.py

import calc  # 导入模块

result = calc.calc_sum(1,2,3,4,5,6)   #使用模块中的calc_sum函数
print(result)  # 21

1.2.1 python在哪儿搜索这些模块文件?

>>> import sys
>>> sys.path
['', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/home/fish/.local/lib/python3.10/site-packages', '/usr/local/lib/python3.10/dist-packages', '/usr/lib/python3/dist-packages']

先导入sys模块,打印sys.path会发现这是搜索路径,第一个表示当前目录。

如何把自己的路径添加到搜索路径中?

sys.path.insert(0,"/home/users/mypaths")

可以在操作系统中配置环境变量PYTHONPATH ,python会在这个指定的路径中查找。

如:

fish@home:~$ export PYTHONPATH=$PYTHONPATH:/home/fish/pythons
fish@home:~$ python3
Python 3.10.6 (main, Nov  2 2022, 18:53:38) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/fish', '/home/fish/pythons', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/home/fish/.local/lib/python3.10/site-packages', '/usr/local/lib/python3.10/dist-packages', '/usr/lib/python3/dist-packages']

1.2.2 模块中添加测试代码

# filename: calc.py

def calc_sum(*args) -> float:
    tmp = 0
    for value in args:
        tmp += value
    return tmp


# print(calc_sum(3,4,5))

print(__name__)
if __name__ == '__main__':
    print(calc_sum(3, 4, 5))

测试代码在导入模块的时候会执行,这不是我们想要的,需要用 if __name__ == '__main__': 来判断一下。

  • 如果当前执行的是calc.py文件则 __name__的值是__main__
  • 如果当前calc做为模块被导入,则__name__的值是文件名calc

通过这样的判断,可以防止模块被导入时执行测试代码。

1.3 导入模块中的函数

from 模块名 import 函数名, 函数名, ...

模块中的类也是这样导入,方法一样。

定义模块:

# filename: calc.py

def calc_sum(*args) -> float:
    tmp = 0
    for value in args:
        tmp += value
    return tmp


class Dog:
    def __init__(self):
        print("Dog Class")

导入:

# filename: main.py

from calc import calc_sum, Dog
result = calc_sum(1,2,3,4,5,6)
print(result) # 21
Dog() # Dog Class

在导入的时候,可以一次性导入:

from 模块 import *

1.4 为模块或模块中的成员指定别名

import 模块 as 别名
from 模块 import 函数 as 别名, 类 as 别名

用别名可以防止命名冲突

# filename: calc.py
def trace():
    print("calc -> trace")
    
# filename: main.py
from calc import trace
def trace():  # 定义trace把导入的覆盖了
    print("main -> trace")
trace()

# filename: main.py
from calc import trace as calc_trace  # 定义别名
def trace():
    print("main -> trace")
trace()
calc_trace()

两种导入方式的区别:

使用import语句导入模块时,会创建一个新的命名空间,而from .. import则才成员导入到当前命名空间中。但可能会覆盖当前空间中的成员。

1.5 查看模块中的成员

dir (模块名)
>>> import random
>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_floor', '_index', '_inst', '_isfinite', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']

标签:__,trace,lib,PYTHON,模块,import,calc
From: https://www.cnblogs.com/three-sheep/p/16988089.html

相关文章

  • python模拟股票的数据分析
    股票分析需求:股票分析使用tushare包获取某股票的历史行情数据。输出该股票所有收盘比开盘上涨3%以上的日期。输出该股票所有开盘比前日收盘跌幅超过2%的日期。假如我......
  • 利用python实现typora自动上传图片
    利用python实现Typora内图像的上传缘由及目的在之前的markdown文件书写中,采用Notion软件。但是后来发现Notion的导出存在很多问题,尤其是在上传到博客园时,对于图片的处理......
  • 【脚本项目源码】Python制作艺术签名生成器,打造专属你的个人艺术签名
    前言明天就是拥抱情人节,情侣们会在公开的场合拥抱,向世人宣告你俩的爱意,也让这个寒冷的冬天变得格外温馨。到了年底依然能热情拥抱,也见证了两人情意如昔。今天子川就给大......
  • python利用列表知识,编写购物车小程序
    #readme#该程序的主要是用来模拟购买商品的store=[("iphone",5800),("pad",2000),("dress",500),("shoe",400)]#定义一个商品列表salary=input("输入你的工资")#输入工......
  • python-文件操作
    python-文件操作操作流程'''文件操作 打开文件:open 读写文件   读:把文件的内容读到变量-read里面   写:把变量值写入到文件里面 关闭文件'''......
  • SAP ERP学习笔记 -- 物料管理模块
    物料管理模块蓝图​ 模块简介  物料管理模块(MM)覆盖了一个集成供应链(物料需求计划、采购、库存和库房管理)所有有关物料管理的任务。 1. 采购管理系统2. 库存管理系统3......
  • 【python】subprocess 使用
    subprocess使用importsubprocessp=subprocess.Popen('ls-l',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,bufsize=1)bufsize:缓冲区大小.当......
  • Python SQL 驱动程序 - pymssql
    PythonSQL驱动程序-pymssql前言pymssql官方地址:https://pypi.org/project/pymssql/一、下载pymssql不通的操作系统,不同的Python版本下载对应的pymssql注意:博主运......
  • python-面向对象三大特性
    python-面向对象三大特性封装继承多态封装'''封装 封装就是把类的属性和方法封装到类的内部,只能在内部使用,不能在类外部使用 把属性和方法前面加两个下划线,这......
  • 如何用python自动化微信小程序
    如何微信小程序自动化抢到跨境安最近,接到一个这样的需求,最终交付的结果如下:为了保护隐私,做了马赛克的处理。一、界面的实现程序提供一个界面,用于启动模拟器和实现启动抢票脚......