开发者

Python跨文件实例化、跨文件调用及导入库示例代码

目录
  • 1. 核心对比表格(完整汇总)
    • 1.1 自定义模块跨文件调用汇总表
    • 1.2 第三方库使用汇总表
    • 1.3 导入方式选择决策表
  • 2. 基础示例(快速上手)
    • 2.1 文件结构
    • 2.2 a.py(被导入文件)
    • 2.3 b.py(调用文件)
      • 2.3.1 方式一:选择性导入
      • 2.3.2 方式二:模块导入
  • 3. 第三方库使用示例
    • 3.1 HTTP 请求库
      • 3.2 日志库
      • 4. 常见问题快速解决
        • 4.1 循环导入
          • 4.2 命名冲突
            • 4.3 可选依赖
            • 5. 最佳实践总结
              • 6. 快速参考
                • 6.1 导入语法速查
                  • 6.2 适用场景速查
                  • 总结 

                    Python跨文件实例化、跨文件调用及导入库示例代码

                    code review!

                    1. 核心对比表格(完整汇总)

                    1.1 自定义模块跨文件调用汇总表

                    对象类型定义示例导入方式使用方式完整代码示例适用场景
                    class Calculator:from module_a import Calculatorcalc = Calculator()calc = Calculator("name")需要创建多个实例
                    import module_acalc = module_a.Calculator()calc = module_a.Calculator("name")避免命名冲突
                    函数def calculate(a, b):from module_a import calculateresult = calculate(1, 2)result = calculate(10, 20)频繁调用
                    import module_aresult = module_a.calculate(1, 2)result = module_a.calculate(10, 20)明确来源
                    变量x = 10from module_a import xprint(x)print(f"Value: {x}")直接访问
                    import module_aprint(module_a.x)print(f"Value: {module_a.x}")保持命名空间
                    预实例化对象calculator = Calculator()from module_a import calculatorcalculator.add(1, 2)result = calculator.add(5, 3)共享全局实例
                    import module_amodule_a.calculator.add(1, 2)result = module_a.calculator.add(5, 3)明确对象来源
                    类方法@classmethod def create():from module_a import CalculatorCalculator.create()obj = Calculator.create()工厂方法
                    静态方法@staticmethod def validate():from module_a import CalculatorCalculator.validate(5)valid = Calculator.validate(5)工具方法
                    包中的类package/module.py: class Xfrom package.module import Xx = X()x = X("param")包结构项目
                    包的公开接口__init__.py: from .module import Xfrom package import Xx = X()x = X("param")包的便捷访问

                    1.2 第三方库使用汇总表

                    库类型导入方式实例化/使用方式跨文件共享模式代码示例常见用途
                    HTTP请求库import requestssession = requests.Session()全局sessionglobal_session = requests.Session()API客户端
                    from requests import Sessionsession = Session()配置化sessionsession = Session(); session.headers.update({})自定义配置
                    日志库import loggingl编程客栈ogger = logging.getLogger(name)命名日志器app_logger = logging.getLogger("app")应用日志
                    from logging import getLoggerlogger = getLogger(name)快速访问logger = getLogger(__name__)模块日志
                    数据库库import SQLite3conn = sqlite3.connect(db)连接池conn = sqlite3.connect("app.db")数据存储
                    配置库import configparserconfig = ConfigParser()全局配置config = ConfigParser(); config.read()配置管理
                    jsON库import jsonjson.loads() / json.dumps()直接函数调用data = json.loads(json_string)数据序列化
                    时间库import datetimedatetime.now()工具函数now = datetime.datetime.now()时间处理
                    数学库import mathmath.sqrt()直接函数调用result = math.sqrt(16)数学计算
                    from math import sqrtsqrt()直接访问result = sqrt(16)频繁使用

                    1.3 导入方式选择决策表

                    场景推荐导入方式原因示例
                    只使用1-2个对象from module import obj1, obj2简洁直接from math import sqrt, pi
                    使用多个对象import module避免命名冲突import numpy as np
                    对象名很长from module import LongClassName as Short提高可读性from requests import Session as S
                    包的公开接口from package import PublicClass符合设计意图from django.http import HttpResponse
                    避免命名冲突import module1; import module2保持命名空间import os; import sys
                    条件导入try: import optional_lib except:可选依赖try: import numpy except: numpy = None

                    2. 基础示例(快速上手)

                    2.1 文件结构

                    a.py
                    b.py
                    

                    2.2 a.py(被导入文件)

                    x = 10
                    
                    def bar():
                        print("bar")
                    
                    class Foo:
                        def hello(self):
                            print("hello")
                    
                    foo = Foo()
                    

                    2.3 b.py(调用文件)

                    2.3.1 方式一:选择性导入

                    from a import Foo, bar, x, fojavascripto
                    
                    f = Foo()
                    bar()
                    print(x)
                    foo.hello()
                    

                    2.3.2 方式二:模块导入

                    import a
                    
                    f = a.Foo()
                    a.bar()
                    print(a.x)
                    a.foo.hello()
                    

                    3. 第三方库使用示例

                    3.1 HTTP 请求库

                    # config.py
                    import requests
                    session = requests.Session()
                    
                    # maipythonn.py
                    from config import session
                    response = session.get("https://api.example.com")
                    

                    3.2 日志库

                    # logger.py
                    import logging
                    logger = logging.getLogger("app")
                    
                    # main.py
                    from logger import logger
                    logger.info("Applpythonication started")
                    

                    4. 常见问题快速解决

                    4.1 循环导入

                    # 解决方案:函数内导入
                    def get_processor():
                        from file_b import DataProcessor  # 延迟导入
                        return DataProcessor()
                    

                    4.2 命名冲突

                    # 解决方案:使用别名
                    from module_a import Logger as LoggerA
                    from module_b import Logger as LoggerB
                    

                    4.3 可选依赖

                    # 解决方案:条件导入
                    try:
                        import pandas as pd
                        HAS_PANDAS = True
                    except ImportError:
                        HAS_PANDAS = False
                    
                    def process_data(data):
                        if HAS_PANDAS:
                            return pd.DataFrame(data)
                        else:
                            return data  # 降级处理
                    

                    5. 最佳实践总结

                    原则说明示例
                    明确优于简洁清楚表达导入来源import requests 而非 from requests import *
                    一次性导入在文件顶部集中导入所有import语句放在文件开头
                    避免深层导入减少包的嵌套层次from myproject.utils import helper
                    使用__all__控制包的公开接口__all__ = ["PublicClass", "public_function"]
                    文档化依赖明确说明外部依赖在模块顶部注释说明依赖的库

                    6. 快速参考

                    6.1 导入语法速js

                    import module                    # 导入模块
                    from module import obj          # 导入对象
                    from module import obj as alias # 导入并重命名
                    from package.module import obj  # 包中模块导入
                    from . import module           # 相对导入(包内)
                    from ..parent import module    # 上级包导入
                    

                    6.2 适用场景速查

                    • 小脚本from module import needed_items
                    • 大项目import module + 包结构
                    • 库开发:使用 __init__.py 控制公开接口
                    • 可选功能:条件导入 + 异常处理

                    总结 

                    到此这篇关于python跨文件实例化、跨文件调用及导入库的文章就介绍到这了,更多相关Python跨文件实例化调用及导入库内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

                    0

                    上一篇:

                    下一篇:

                    精彩评论

                    暂无评论...
                    验证码 换一张
                    取 消

                    最新开发

                    开发排行榜