zoukankan      html  css  js  c++  java
  • 模快导入、函数导入

    func.py

    def my_abs(x):
    if x >= 0:
    return x
    else:
    return -x
    print(my_abs(-8))

    导入引用func.py中的my_abs函数
    test.py
    from day1.func import my_abs  #导入函数
    print(my_abs(-9))

    import day1.func         #导入模块
    print(day1.func.my_abs(-8))

    from day1 import func     #导入模块
    print(func.my_abs(-7))
    #print(abs(A))
    help(abs)
    ----------------------------------
    以相对路径导入模块,把要导入的模块的上级目录添加到环境变量中
    import os
    import sys
    BASE_DIR =(os.path.dirname(os.path.dirname( os.path.abspath(__file__) )))
    BASE_DIR = ('%s%s' %(BASE_DIR,'day1'))
    sys.path.append(BASE_DIR)
    print (BASE_DIR)

    import abc1  #标红是因为pycharm在代码运行之前加载的时候,没有找到这个文件,所以会标红。
    print(abc1.my_abs(-8))
    print(sys.path)

    print(__file__) #获取的是当前运行的相对路径
    print( os.path.abspath(__file__) ) #获取的是当前运行的绝对路径
    print(os.path.dirname( os.path.abspath(__file__) )) #获取当前运行的绝对路径的上级目录

    此运行的代码是和day1同级目录下的一个文件夹中的文件里运行的。
    -----------------------------------------------
    模块定义、导入、优化详解
    1.定义:

    模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test)

    包:用来从逻辑上组织模块的,本质就一个目录(必须带有一个__init__.py文件)

    2.导入方法

    import module_name

    import module1_name,modul2_name

    from module_alex1 import * #不建议使用浪费内存,查找慢

    from module_alex1 import m1,m2,m3

    from module_alex1 import logger as logger_alex

    3, import本质(路径搜索和搜索路径)

    导入模块的本质就是把python文件解释(运行)一遍(import test test='test.py all code')

    (from test import m1 m1='m1 all code')

    import module_name ---->module_name.py ----->moudle_name.py的路径------>sys.path ;根据sys.path 环境变量里的列表顺序查找模块的,如果添加在最后,前面的环境变量里面有重复的这个模块名,就会加载sys.path里前面的那个模块,sys.path 是相对路径,只是pycharm会解释成绝对路径;

      导入包(import 包名)的本质就是执行该包下的__init__.py文件
      可以在该包的__init__.py下添加 form . import 模块名,这样别的地方就可以用这种方式调用这个模块;


    4. 导入优化

    from module_test import test
    这样的好处是不用去查找module_test这个模块,减少代码运行时间
    如果这样的话:
    improt module_test 调用 test 函数的话
    需要 module_test.test()调用,这样增加了代码的运行时间,不建议使用;


    5.模块分类

    标准库

    开源模块

    自定义模块

    参考:
    https://www.cnblogs.com/luckerzhang/p/9390580.html
  • 相关阅读:
    vc6编译64位程序
    WebBrowser 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件
    python中subprocess.Popen的使用
    对AutoResetEvent和ManualResetEvent的理解
    Vue-Socket.io跨域问题 has been blocked by CORS policy: No 'Access-Control-Allow-Origin' Mentalflow解决思路
    如何使用GoLand debug
    Python协程与JavaScript协程的对比
    [基础] TCP小结
    导出字段脚本
    永恒之蓝——windows server 2003 漏洞
  • 原文地址:https://www.cnblogs.com/lighthouse/p/9407289.html
Copyright © 2011-2022 走看看