保定专门做网站的公司,临沂网站模板,网站开发要学些什么,西安建设工程信息网官网入口1. 模块
Python中的一个文件即为一个模块(Module)#xff0c;一个模块引用另外一个模块的变量、函数或类时#xff0c;使用import来导入。模块名即文件名。
如fibo.py 文件下有如下代码#xff1a; def fib(n): # write Fibonacci series up to na, b 0, 1while a 一个模块引用另外一个模块的变量、函数或类时使用import来导入。模块名即文件名。
如fibo.py 文件下有如下代码 def fib(n): # write Fibonacci series up to na, b 0, 1while a n:print(a, end )a, b b, abprint()那么在main.py文件中如下使用fibo模块。 import fibofibo.fib(100)或者直接导出指定函数此方法可能导致同名函数被覆盖导致代码异常。 from fibo import fibfib(100)2. 包
2.1. 基本用法
包(Package)是模块的一个集合一个包中可以有多个子包。包名即目录名包目录下必须包含__init__.py文件否则只是一个多模块的文件夹。
在main.py中导入algo.real模块: import algo.real import algo.complexprint(algo.real.add(1, 2))或 from algo import real, complexprint(real.add(1, 2))2.2. 高级用法
2.2.1. 导入所有模块
如果包中的模块非常多想一次全部导入包中的模块则需要在__init__.py中指定所有导出的模块。为什么不建议__init__.py文件留空呢留空默认表示导出所有包中的模块。如果包中有一些单元测试的模块只用于开发自测。如果用户使用from XXX import *导入所有模块就会导致单元测试模块也被执行这是不符合用户预期的。所以包设计者应该显式在__init__.py中导出所有模块避免这种可能的异常。 # codingutf-8from . impourt real, complex__all__ [real, complex]然后在main.py中调用 # codingutf-8from algo import *# 导入algo包中的__init__.py模块中__all__记录的所有模块print(real.add(1, 2))print(complex.sub(2, 1))2.2.2. 设置公共信息
可以在__init__.py中设置包版本和作者信息还可以设置一些包的变量和公共函数等。
__version__ 1.0
__author__ Your Namedef init_pakage():pass3. 搜索路径
3.1. 模块搜索路径
当导入一个名为 spam 的模块时解释器首先会搜索具有该名称的内置模块。 这些内置的模块的名称在 sys.builtin_module_names 中列出。 如果未找到它将在变量 sys.path 所给出的目录列表中搜索名为 spam.py 的文件。 sys.path 是从这些位置初始化的: 被命令行直接运行的脚本所在的目录或未指定文件时的当前目录。 PYTHONPATH 目录列表与 shell 变量 PATH 的语法一样。 依赖于安装的默认值按照惯例包括一个 site-packages 目录由 site 模块处理。
所以要增加搜索路径可以在命令行中先行设置环境变量PYTHONPATH再执行脚本即可。也可以在代码中 sys.path.append(‘/ufs/guido/lib/python’) 3.2. 相对路径
当一个包有多个子包时子包导入模块时其默认路径并不是子包当前路径此时如果想指定当前路径则需要使用相对路径导入。 from . import sub_math# 从当前目录导入模块sub_mathfrom .sub_pack import *# 从当前目录的子包sub_pack中导入所有模块from .. import utils## 从上级目录导入模块utilsfrom ..filters import equalizer# 从上级目录的包filters中导入模块equalizer