我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python3快速入门(四)——Pyth

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python3快速入门(四)——Pyth

一、Python包简介

1、包

Python中使用包管理模块,包通常对应一个目录,必须在目录下创建一个init.py模块,init.py模块的模块名称即为包名,Python才会将目录解析为包。
init.py文件内可以定义初始化包的内容,导入包的内容,限制包内模块的导出。
init.py文件可以为空,也可以是一个模块,其模块名称为包名称。
导入包或包的模块、变量、函数时,init .py文件会被自动执行。

2、模块

Python中一个.py文件就是一个模块。
Python 中用 import 或者 from...import 来导入相应的模块。
将整个模块(somemodule)导入,格式为: import somemodule
从某个模块中导入某个函数或变量,格式为: from somemodule import somefunction
从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数或变量导入,格式为: from somemodule import *

import sys
print('================Python import module==========================')
print('命令行参数为:')
for i in sys.argv:
    print(i)
print("python 路径为", sys.path)

from sys import argv, path  # 导入特定的成员

print('================python from import===================================')
print(argv)
print(path)

对导入的模块进行重命名
Import package.module as name
import导入包或模块时,如果导入模块较多需要换行,可以使用反斜杠,或是将使用小括号将包含所有的模块。
包和模块不会被重复导入。

3、模块的内置变量

模块内部预定义了内置变量:
name :当前模块名称
package :当前模块所属包的名称
doc :当前模块的注释内容
file :当前文件

# -*- coding:utf-8 -*-
print("name: " + __name__)
print("package: " + (__package__ or "当前模块不属于任何包"))
print("doc: " + (__doc__ or "当前模块没有任何注释"))
print("file: " + __file__)
# name: __main__
# package: 当前模块不属于任何包
# doc: 当前模块没有任何注释
# file: test.py

如果某个文件被当作入口文件,内置变量package 没有值,name 值为maindoc file 值为文件名称(不含路径)。
每个模块都可以任意写一些没有缩进的代码,并且在载入时自动执行,为了区分模块是主执行文件还是被调用的模块文件,Python引入了一个变量name,当文件是被调用时,name的值为模块名,当文件作为入口被执行时,name为'main'。因此,可以在每个模块中写上测试代码,测试代码仅当模块被Python直接执行时才会运行,代码和测试结合在一起,完美实现对测试驱动开发(TDD)的支持。

if __name__ == "__main__":
    function_name()

将一个模块文件作为模块执行而不是应用执行的命令如下:
python3 -m package.module

二、Python包管理

1、导入包和模块

import只能导入包和模块,不能直接导入变量或者函数。对于多层包嵌套后导致导入名称过长,可以为其重命名。

import package1.package2.module_name
import package1
import package1.module_name
import package1.package2.module_name as new_name

导入包和模块时需要避免循环导入,两个或者多个模块文件互相导入会报错。
Python在导入模块时,会执行模块里的所有内容,但多次导入只会执行一次。
Import导入包或模块时,Python 解释器寻找模块的优先级如下:
A、当前目录
B、环境变量PYTHONPATH
C、sys.path(list 类型)
模块在被导入执行时,Python解释器为加快程序的启动速度,会在与模块文件同一目录下自动生成.pyc文件,.pyc是经过编译后的字节码。
Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行。

2、导入变量和函数

导入某个模块的变量,多个使用逗号分隔
from package1.package2.module_name import variable_name

导入某个模块的函数,多个使用逗号分隔
from package1.package2.module_name import function_name
导入某个包的某个模块,多个使用逗号分隔
from package1 import module_name
导入模块的所有变量和函数
from package1.module_name import *
在模块内使用内置all属性指定本模块可以导出的变量或函数,外部导入只能使用指定的变量或函数。
在模块(*.py)中使用导出all列表里的类、函数、变量等成员,否则将导出所有不以下划线开头(私有)的成员,在模块中使用all属性可避免在相互引用时的命名冲突。

#!/usr/bin/python3

__all__ = ["variable1", "variable2", "function_name1", "function_name2"]

variable1 = 0
variable2 = 0

def function_name1(args):
    pass

def function_name2(args):
    pass

在导入变量和函数时,如果变量和函数太多需要换行,则可以使用反斜杠换行或是使用小括号修饰多个变量或函数。

from package1.module_name import variable1, variable2 \
    variable3, function_name1

from package1.module_name import (variable1, variable2, 
                                  function_name2, function_name2)

3、顶级包

顶级包与入口文件 main.py 的位置有关,与 main.py 同级的包是顶级包,因此main.py入口文件不属于任何包。

4、相对导入

相对导入是导入模块时指定被导入模块名称的相对路径。
import 不支持相对导入,只能使用 from ... import ... 格式实现相对导入,
“ .  ..  ... ” 来表示相对路径,一个点表示当前包,两个点表示上一级包,以此类推。
入口文件中没有包的概念,因此不能使用相对导入。
使用相对导入不要超出顶级包,入口文件同级的包都不能使用相对导入。
在main.py如果作为模块执行时,可以使用相对导入,此时使用如下命令执行:
python3 -m main.py

5、绝对导入

绝对导入是导入时必须指定从顶级包到被导入模块名称的完整路径,可以使用import 和 from ... import ...进行导入。

6、init.py模块

init.py文件存在包的根目录下,当包或者包中的任意模块或模块中变量、函数被导入时,init.py中内容会首先自动被执行。因此,init.py文件可以实现如下应用:
A、限制本包的模块导入
init.py中写入内置函数all,决定哪些模块可以被外部导入。
__all__ = ["module_name1", "module_name2"]
B、批量导入
如果包内多个模块文件都需要用到某些模块文件时,可以在包的init.py文件中导入需要的模块文件,然后就可以在本包不同的模块文件中直接使用导入的模块 。

三、Python项目结构

1、Python文件结构

通常,Python文件结构如下:

#!/usr/bin/python3

# 模块文档
"""
    This is an example.
"""

# 模块导入
import sys
import os

# 定义全局变量
debug = True

# 定义类
class class_name:
    pass

# 定义函数
def function_name():
    pass

# 主程序
if __name__ == "__main__":
    function_name()

2、Python项目目录结构

通常,Python项目的目录结构如下:
README:项目说明文档。
bin(scripts):存放项目的可执行脚本。
project_name:存放项目的所有源代码,程序的入口文件最好命名为main.py。
docs: 存放项目文档。
tests:测试代码目录。
extras:项目扩展部分,不属于项目必需的部分,存放与项目相关的sample、poc,通常子目录如下dev_example、production_example、test1_poc、test2_poc。
setup.py:项目安装、部署、打包的脚本。
requirements.txt:存放软件依赖的外部Python包列表。
README:项目说明文件。
LICENSE.txt:版权声明
ChangeLog.txt:版本变更日志记录
AUTHORS:作者清单
INSTALL:安装说明
MANIFEST.in:装箱清单文件
MAKEFILE:编译脚本

四、pipenv包管理工具

1、pipenv简介

Python项目开发中,在开发需求完成并测试好后,需要发布到正式服务器,此时会面临环境依赖问题。Python项目可能会有多个第三方模块包,并且可能会有版本约束问题,因此需要一个虚拟环境,在虚拟环境里面模拟出跟服务器相同的环境。
pipenv ,全称为Python Development Workflow for Humans,旨在为开发项目自动创建和管理虚拟环境并管理 Python 包,是virtualenv 和pip的合集,通过创建指定python版本的虚拟环境和安装依赖包,提供各个项目隔离的开发环境。

2、pipenv安装

对于Python3,安装命令如下:
pip3 install pipenv
安装结果查看:
pipenv –version

3、pipenv常用命令

pipenv --three
pipenv -- two
pipenv --python 3.x.x
pipenv --python 2.x.x
创建虚拟环境,并指定Python版本
pipenv shell从系统环境切换到虚拟环境
pipenv install xxxx在虚拟环境安装软件包
exit退出虚拟环境
pipenv uninstall [module_name] 删除Python包
pipenv --rm删除虚拟环境
pipenv --where 列出本地工程路径
pipenv --venv 列出虚拟环境路径
pipenv --py 列出虚拟环境的Python可执行文件
pipenv install 创建虚拟环境
pipenv install [moduel] 安装包
pipenv install [moduel] --dev 安装包到开发环境
pipenv uninstall [module] 卸载包
pipenv graph 查看包依赖
pipenv lock 生成lockfile
pipenv run python [pyfile] 运行py文件
pipenv uninstall --all 卸载全部包并从Pipfile中移除

4、更换源

pipenv默认的Pipfile 文件中指定使用官方源锁定依赖,会导致速度过慢,解决方案自然是更换国内源,常用国内源如下:
阿里云:http://mirrors.aliyun.com/pypi/simple/
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学:https://pypi.mirrors.ustc.edu.cn/simple/
源更换需要将Pipfile 文件中url的值替换为国内源。

[[source]]
name = "pypi"
url = "http://mirrors.aliyun.com/pypi/simple/ "
verify_ssl = true

[dev-packages]

[packages]
pymysql = "*"
pymango = "*"
mysql-connector = "*"
mysqldb = "*"
mysql-python = "*"

[requires]
python_version = "3.7"

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python3快速入门(四)——Pyth

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python3快速入门(四)——Pyth

一、Python包简介1、包Python中使用包管理模块,包通常对应一个目录,必须在目录下创建一个init.py模块,init.py模块的模块名称即为包名,Python才会将目录解析为包。init.py文件内可以定义初始化包的内容,导入包的
2023-01-31

Python3快速入门(九)——Pyth

一、Python线程模块1、线程简介一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程本身不拥有系统资源,与进程内的其它线程共享进程的所有资源。一个进程中至少
2023-01-31

Python3快速入门(十)——Pyth

一、socket模块简介Python 提供了两个级别访问的网络服务,低级别的网络服务支持基本的 Socket,提供了标准的BSD Sockets API,可以访问底层操作系统Socket接口的全部方法;高级别的网络服务模块 SocketSe
2023-01-31

Python3快速入门(五)——Pyth

一、函数定义1、函数定义Python 定义函数使用 def 关键字,一般格式如下:def function_name(parameter_list): pass默认情况下,参数值和参数名称按函数声明中定义的顺序进行匹配。函数代码块以 
2023-01-31

Python3快速入门(一)——Pyth

一、Python简介1、Python简介Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,由荷兰Guido van Rossum于1989年底发明,第一个公开发行版于1991年发布,Python源代码遵循 GPL(GNU
2023-01-31

Python3快速入门(七)——Pyth

1、re模块简介re 模块提供 Perl 风格的正则表达式模式,使 Python 语言拥有全部的正则表达式功能。2、正则表达式模式模式字符串使用特殊的语法来表示一个正则表达式:正则表达式模式中的字母和数字匹配同样的字符串;多数字母和数字前加
2023-01-31

Python3快速入门(六)——Pyth

一、面向对象技术简介1、面向对象简介面向对象编程(Object Oriented Programing,OOP)是一种编程思想,OOP把对象当成程序的一个基本单元,一个对象包含数据和操作数据的方法。面向对象编程的三大特性如下:A、封装,可以
2023-01-31

Python3快速入门(三)——Pyth

一、Python3标准数据类型Python3 中有六种标准数据类型:A、Number(数字)B、String(字符串)C、List(列表)D、Tuple(元组)E、Set(集合)F、Dictionary(字典)Python3 的六种标准数据
2023-01-31

Python3快速入门(二)——Pyth

一、Python3语法基础1、Python3编码默认情况下,Python 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串,可以为Python源码文件指定不同的编码,如下:# -*- coding: utf-8 -*-2
2023-01-31

Python3快速入门(八)——Pyth

1、JSON简介JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,是基于ECMAScript的一个子集。2、json模块简介Python3 中可以使用 json 模块来对 JSON 数据进行编解
2023-01-31

Python3快速入门(十四)——Pan

一、DataFrame IO1、CSV文件pandas.read_csv(filepath_or_buffer, na_values='NAN', parse_dates=['Last Update'])从CSV文件中读取数据并创建一个Da
2023-01-31

Python3快速入门

Python3快速入门Python3快速入门(一)——Python简介https://blog.51cto.com/9291927/2385592Python3快速入门(二)——Python3基础https://blog.51cto.com
2023-01-31

python3.x 快速入门

Edit the > 2018/6/15 11:26:53 1认识Python人生苦短,我用python - 优雅,明确,简单 是python设计哲学 - python的设计目标之一, 是让代码具备高度的可阅读性 - python 被广泛用
2023-01-31

Python3快速入门——(3)dict

#先回忆下列表的操作animals=["cat","dog","rabbit"] #找到list中的某个值(第一种方法)for animal in animals: if(animal=="cat"):
2023-01-31

Python3快速入门(十八)——PyI

一、PyInstaller简介1、PyInstaller简介PyInstaller是一个跨平台的Python应用打包工具,支持 Windows/Linux/MacOS三大主流平台,能够把 Python 脚本及其所在的 Python 解释器打
2023-01-31

Python3快速入门(十三)——Pan

一、Pandas数据结构简介Pandas有三种主要数据结构,Series、DataFrame、Panel。Series是带有标签的一维数组,可以保存任何数据类型(整数,字符串,浮点数,Python对象等),轴标签统称为索引(index)。D
2023-01-31

Python3快速入门(十五)——Pan

一、函数应用1、函数应用简介如果要将自定义函数或其它库函数应用于Pandas对象,有三种使用方式。pipe()将函数用于表格,apply()将函数用于行或列,applymap()将函数用于元素。2、表格函数应用可以通过将函数对象和参数作为p
2023-01-31

Python3快速入门(十六)——Mat

一、Matplotlib简介1、Matplotlib简介Matplotlib是 Python 2D-绘图领域使用最广泛的套件,可以简易地将数据图形化,并且提供多样化的输出格式。matplotlib有两个接口,一个是状态机层的接口,通过pyp
2023-01-31

Python3快速入门(十二)——Num

一、NumPy简介1、NumPy简介NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,同时对数组运算提供了大量的数学函数库。Numpy 是一个运行速度非常快的数学库,内部解
2023-01-31

Python3快速入门(十一)——Pyt

一、mysql-connector 驱动1、mysql-connector 简介mysql-connector 是 MySQL 官方提供的驱动器。使用pipenv进行包管理,安装命令如下:pipenv install mysql-conne
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录