python模块

python模块是一个py文件,一个模块只会被导入一次

 

python在编译或安装的时候会确定搜索路径,使用import语句的时候,python解释器就从搜索路径(即一系列目录名)中查找模块

import sys
print(sys.argv)  # 命令行参数
print(sys.path)  # 路径

结果为:

['D:/Pycharm/pythonProject/main.py']
['D:\\Pycharm\\pythonProject', 'D:\\Pycharm\\pythonProject', 'C:\\Program Files\\PerkinElmerInformatics\\ChemOffice2020\\ChemScript\\Lib', 'C:\\Users\\86158\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip', 'C:\\Users\\86158\\AppData\\Local\\Programs\\Python\\Python39\\DLLs', 'C:\\Users\\86158\\AppData\\Local\\Programs\\Python\\Python39\\lib', 'C:\\Users\\86158\\AppData\\Local\\Programs\\Python\\Python39', 'D:\\Pycharm\\pythonProject\\venv', 'D:\\Pycharm\\pythonProject\\venv\\lib\\site-packages', 'C:\\Users\\86158\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages', 'C:\\Users\\86158\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\win32', 'C:\\Users\\86158\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\win32\\lib', 'C:\\Users\\86158\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\Pythonwin']

 

import

from … import *

 

可以使用模块名称.函数名来访问函数

例如我的myFunction.py中定义了max()函数,那么可以通过myFunction.max()来使用max()函数

 

__name__属性

每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行:

if __name__ == '__main__':
   print('程序自身在运行')
else:
   print('我来自另一模块')

如果程序自身运行,会输出'程序自身在运行',如果被导入其他模块,会输出'我来自另一模块'

 

dir()函数可以找到模块内定义的所有名称,以一个字符串列表的形式返回:

print(dir())  # 不加参数,罗列出当前定义的所有名称
a = 1
print(dir())
import sys
print(dir(sys))
print(dir())

结果为:

['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a']
['__breakpointhook__', '__displayhook__', '__doc__', '__excepthook__', '__interactivehook__', '__loader__', '__name__', '__package__', '__spec__', '__stderr__', '__stdin__', '__stdout__', '__unraisablehook__', '_base_executable', '_clear_type_cache', '_current_frames', '_debugmallocstats', '_enablelegacywindowsfsencoding', '_framework', '_getframe', '_git', '_home', '_xoptions', 'addaudithook', 'api_version', 'argv', 'audit', 'base_exec_prefix', 'base_prefix', 'breakpointhook', 'builtin_module_names', 'byteorder', 'call_tracing', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'get_asyncgen_hooks', 'get_coroutine_origin_tracking_depth', 'getallocatedblocks', 'getdefaultencoding', 'getfilesystemencodeerrors', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'getwindowsversion', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'is_finalizing', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'platlibdir', 'prefix', 'pycache_prefix', 'set_asyncgen_hooks', 'set_coroutine_origin_tracking_depth', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'thread_info', 'unraisablehook', 'version', 'version_info', 'warnoptions', 'winver']
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'sys']

 

python本身带有一些标准的模块库,有些模块直接被构建在解析器里。模块 sys ,它内置在每一个 Python 解析器中

 

包是一种管理 Python 模块命名空间的形式,本质上就是一个文件夹,目录只有包含一个叫做 __init__.py 的文件才会被认作是一个包

导入包中的模块的方式和上面一样

注意如果使用from package import *时,会把__init__.py中的一个叫做__all__的列表变量中的所有名字导入(例如:__all__ = ['echo', 'surround', 'reverse']),如果__all__没有定义,那么就不会导入任何子模块,而是导入package中定义的所有内容

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python模块 - Python技术站

(0)
上一篇 2023年4月2日 下午5:44
下一篇 2023年4月2日 下午5:44

相关文章

  • pythonFile方法

    open()方法用于打开一个文件,并返回文件对象,注意最后一定要关闭文件对象,即调用close()方法 一般形式为: open(file, mode= , buffering= , encoding= , errors= , newline= , closefd= , opener= )   参数说明: file: 必需,文件路径(相对或者绝对路径) mod…

    Python开发 2023年4月2日
    00
  • python函数

    定义函数的一般格式: det function():   statements   return a return用于退出函数,向调用方返回一个表达式   函数可以不设置参数,也可以设置参数: def function1(): print(‘大湘菜’) def function2(a): print(a) function1() function2(‘小湘菜…

    Python开发 2023年4月2日
    00
  • python错误和异常

    Python 有两种错误很容易辨认:语法错误和异常   assert用于判断一个表达式,在表达式条件为 false 的时候触发异常: assert 1 == 1 assert 1 == 2 结果会报错: assert 1 == 2 AssertionError   语法错误,或者称之为解析错 比如: print(‘大湘菜’] 结果会报错: print(‘大湘…

    Python开发 2023年4月2日
    00
  • python循环语句

    while循环 一般形式: while condition:   statement1 else:   statement2   a = 0 while a < 3: print(a) a = a + 1 else: print(a, ” 大于或等于3″) 结果为: 0 1 2 3 大于或等于3   无限循环: while True: # 或者一个永远…

    Python开发 2023年4月2日
    00
  • python命名空间和作用域

    命名空间是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的   命名空间查找顺序:局部命名空间、全局命名空间、内置命名空间   相同的对象名称可以存在于多个命名空间中   作用域就是一个可以直接访问命名空间的正文区域。程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。变量的作用域决定了在哪一部分程序可以访问…

    Python开发 2023年4月2日
    00
  • python面向对象

    传统的结构化设计方法的基本点是面向过程,系统被分解成若干个过程。而面向对象的方法是采用构造模型的观点,在系统的开发过程中,各个步骤的共同的目标是建造一个问题域的模型。在面向对象的设计中,初始元素是对象,然后将具有共同特征的对象归纳成类,组织类之间的等级关系,构造类库。在应用时,在类库中选择相应的类 面向对象编程的主要思想是把构成问题的各个事务分解成各个对象,…

    Python开发 2023年4月2日
    00
  • 如何用html写书

    原理:利用xml.etree.ElementTree对html进行解析和写入 # encoding=utf-8import xml.etree.ElementTree as ET # 解析html、xmlname = input(‘type in file name:’)def circle(): tree = ET.parse(f'{name}.html’…

    Python开发 2023年4月2日
    00
  • python基本数据类型

    python的变量不需要声明,但在使用前必须要赋值   多个变量赋值: a = b = c = 1 x, y, z = 1, True, ‘大湘菜’   python有六个标准的数据类型: Number、String、Tuple、List、Set、Dictionary,其中前三者为不可变数据,后三者为可变数据   Number: a, b, c, d = 1…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部