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

相关文章

  • python函数

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

    Python开发 2023年4月2日
    00
  • 如何使用appnium爬取视频数据

    要先安装Appium,并用它来查找对应元素的id、xpath等信息   from appium import webdriver from appium.webdriver.extensions.android.nativekey import AndroidKey from selenium.webdriver.common.by import By im…

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

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

    Python开发 2023年4月2日
    00
  • python运算符

    算术运算符: + – * / % ** //   比较运算符: == != > < >= <=   赋值运算符: = += -= *= /= %= **= //= :=(海象运算符)   其中海象运算符用于在表达式内部为变量赋值: name = ‘大湘菜’ if n := len(name) < 4: print(‘a nice…

    Python开发 2023年4月2日
    00
  • python输入和输出

    输出 1、表达式语句 2、print() 3、write() 美化输出格式 repr()产生一个解释器易读的表达形式: a = ‘the sea has bank\nmy love is boundless’ print(a) print(repr(a)) # 可以转义特殊字符 结果为: the sea has bank my love is boundle…

    Python开发 2023年4月2日
    00
  • python迭代器和生成器

    iter()用于创建迭代器,next()用于输出迭代器的下一个元素: names = [‘微湘菜’, ‘小湘菜’, ‘大湘菜’, ‘巨湘菜’] iterName = iter(names) for i in range(4): print(next(iterName)) 结果为: 微湘菜 小湘菜 大湘菜 巨湘菜   创建一个迭代器需要在类中实现两个方法 __…

    Python开发 2023年4月2日
    00
  • python爬虫

    Web请求过程 1、服务器渲染:在服务器那边直接把数据和html整合在一起,统一返回给浏览器 在页面源代码中能看到数据 2、客户端渲染:第一次请求只有一个html骨架,第二次请求拿到数据,进行数据展示(一般为XHR) 在页面源代码中看不到数据 <可用检查网页或者F12来查看>   HTTP协议 Hyper Text Transfer Protoc…

    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
合作推广
合作推广
分享本页
返回顶部