chapter 4
1. 自定义模块安装到site-pakages
解释器在查看模块时,会从以下3个主要位置搜索模块:
- 当前工作目录
- 解释器的site-pakages的位置(包含了已安装的第三方Python模块,也包括自己写的)
- 标准库位置
使用setuptools安装模块到site-pakages
- 1. 创建一个发布描述
- 在要发布的文件的同一个文件夹下建立setup.py和README.txt文件
from setuptools import setup
setup(
name='发布的包的名字',
version='1.0', # 版本号后续重新发布时,更新
description='描述',
author='作者',
author_email='作者邮箱',
url='xxx.com',
py_modules=['要发布的.py文件'], # 这个包中的所有.py文件列表
)
- 2. 生成一个发布文件
在文件的文件夹打开命令行
py -3 setup.py sdist
在sdist文件夹中会有个新创建的可安装的压缩文件(.zip或.tar.gz)
- 3. 安装发布文件。
- 使用pip安装包
在安装包的文件夹位置打开命令行
py -3 -m pip install 你的安装包
- 4. 共享代码
- 将安装包分享给他人
- PyPI正式共享
2. Python函数传参
Python的函数传参是按值传递的还是按引用传递的?
按值参数传递 是指使用一个变量的值来取代一个函数参数的做法。如果这个值在函数代码组中改变,对于调用这个函数的代码来说,其中相应的变量值并不会受到任何影响。可以把这个参数认为是原变量值的一个副本。
按引用参数传递(按地址参数传递)则不同,对于调用这个函数的代码,会维护这个代码中变量的一个链接。如果函数代码组中的变量改变,那么在调用这个函数的代码中,相应的变量值也会改变。可以把这个参数认为是原变量的一个别名。
– 《Head First Python》
Python的变量都是对象引用,所以其函数调用本质上是按对象引用调用。而python的函数参数调用,会依据参数的数据类型,来选择是按值还是按引用来调用。
- 对于不可变(字符串、整数和元组),按值传递
- 对于可变(列表、字典和集合)按引用传递
3. PEP8 兼容性
- 安装pytest和PEP8插件
py -3 -m pip install pytest # 安装pytest
py -3 -m pip install pytest-pep8 # 安装pep8
- 检测PEP8兼容性
py.test --pep8 file_to_test.py