这个问题涉及到包和模块管理.包名和模块名一般是小写.你的文件是下面的结构,需要创建空文件 b/__init__.py,将b目录变成package.a/a.py
from b.c import indexindex()
b/c.py
def index(): print("hello")
b/__init__.pya/a.py 里面有两种引用方式,相对引用和绝对引用:# 如果a.py是 library,两种引用方式都可以
from ..b.c import index
# 如果a.py是 executable,必须使用绝对引用
from b.c import index
如果使用绝对引用,需要确保b所在目录在PYTHONPATH (sys.path)里面,比如可以这样执行:
env PYTHONPATH=. python a/a.py
(1)主程序main.py与模块程序mod1.py在同一目录下.
--src
|--mod1.py
|--main.py
直接在main.py中导入模块mod1.py,即 import mod1 或 from mod1 import *
---sub
? ?|--main.py
然后进入主程序main.py所在的路径,执行python main.py
执行前在main.py中加入:
import sys
sys.path.append("..")
import mod1
一些python常用函数包:
线程安全
连接池
使用分段编码上传文件
用来重试请求和处理 HTTP 重定向的助手
支持 gzip 和 deflate 编码
HTTP 和 SOCKS 的代理支持
pip是"Pip Installs Packages"的首字母递归缩写.
pip很容易使用.要安装一个包只需pip install package name即可,而删除包只需pip uninstall package name即可.
最大优点之一是它可以获取包列表,通常以requirements.txt文件的形式获取.该文件能选择包含所需版本的详细规范.大多数 Python 项目都包含这样的文件.
python-dateutil模块提供了对标准datetime模块的强大扩展.我的经验是,常规的Python datetime缺少哪些功能,python-dateutil就能补足那一块.
近年来,几乎所有网站都转向 SSL,你可以通过地址栏中的小锁符号来识别它.加了小锁意味着与该站点的通信是安全和加密的,能防止窃听行为.
IDNA的核心是两个函数:ToASCII和ToUnicode.ToASCII会将国际 Unicode 域转换为 ASCII 字符串.ToUnicode则逆转该过程.在IDNA包中,这些函数称为idna.encode()和idna.decode()
YAML是一种数据序列化格式.它的设计宗旨是让人类和计算机都能很容易地阅读代码——人类很容易读写它的内容,计算机也可以解析它.
PyYAML是 Python 的YAML解析器和发射器,这意味着它可以读写YAML.它会把任何 Python 对象写成YAML:列表、字典,甚至是类实例都包括在内.
①.0、Pyasn1
像上面的IDNA一样,这个项目也非常有用:
①.1、Docutils
Docutils是一个模块化系统,用来将纯文本文档处理为很多有用的格式,例如 HTML、XML 和 LaTeX 等.Docutils能读取reStructuredText格式的纯文本文档,这种格式是类似于 MarkDown 的易读标记语法.
rsa包是一个纯 Python 的 RSA 实现.它支持:
加密和解密
签名和验证签名
它既可以用作 Python 库,也能在命令行中使用.
JMESPath,发音为"James path",使 Python 中的 JSON 更容易使用.它允许你声明性地指定如何从 JSON 文档中提取元素.
它是用于创建 Python 包的工具.不过,其文档很糟糕.它没有清晰描述它的用途,并且文档中包含无效链接.最好的信息源是这个站点,特别是这个创建 Python 包的指南.
像dateutils一样,这个库可帮助你处理日期和时间.有时候,时区处理起来可能很麻烦.幸好有这样的包,可以让事情变得简单些.
使用 Colorama,你可以为终端添加一些颜色:
更多Python知识请关注Python自学网
看你用哪种方式
如果是import 包名,就是包名.函数名方式调用
如果是from 包名 import 函数名、from 包名 import *,就是直接函数名就可以调用
我们可以创建一个用来生成指定边界的斐波那契数列的函数:
def fib(n): # write Fibonacci series up to n
... """Print a Fibonacci series up to n."""
... a, b = 0, 1
... while a n:
... print(a, end=' ')
... a, b = b, a+b
... print()
...
# Now call the function we just defined:
关键字 def 引入了一个函数 定义.在其后必须跟有函数名和包括形式参数的圆括号.函数体语句从下一行开始,必须是缩进的.
函数体的第一行语句可以是可选的字符串文本,这个字符串是函数的文档字符串,或者称为 docstring.(更多关于 docstrings 的信息请参考 文档字符串) 有些工具通过 docstrings 自动生成在线的或可打印的文档,或者让用户通过代码交互浏览;在你的代码中包含 docstrings 是一个好的实践,让它成为习惯吧.
函数 调用 会为函数局部变量生成一个新的符号表.确切的说,所有函数中的变量赋值都是将值存储在局部符号表.变量引用首先在局部符号表中查找,然后是包含函数的局部符号表,然后是全局符号表,最后是内置名字表.所以呢,全局变量不能在函数中直接赋值(除非用 global 语句命名),尽管他们可以被引用.
函数引用的实际参数在函数调用时引入局部符号表,所以呢,实参总是 传值调用 (这里的 值 总是一个对象 引用 ,而不是该对象的值).[1] 一个函数被另一个函数调用时,一个新的局部符号表在调用过程中被创建.
一个函数定义会在当前符号表内引入函数名.函数名指代的值(即函数体)有一个被 Python 解释器认定为 用户自定义函数 的类型. 这个值可以赋予其他的名字(即变量名),然后它也可以被当作函数使用.这可以作为通用的重命名机制:
fib
f = fib
f(100)
如果你使用过其他语言,你可能会反对说:fib 不是一个函数,而是一个方法,因为它并不返回任何值.事实上,没有 return 语句的函数确实会返回一个值,虽然是一个相当令人厌烦的值(指 None ).这个值被称为 None (这是一个内建名称).如果 None 值是唯一被书写的值,那么在写的时候通常会被解释器忽略(即不输出任何内容).如果你确实想看到这个值的输出内容,请使用 print() 函数:
以上就是土嘎嘎小编为大家整理的python引入包函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!