博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day 5 python 模块于包的引用
阅读量:5921 次
发布时间:2019-06-19

本文共 3514 字,大约阅读时间需要 11 分钟。

 

一.面向过程编程 函数的参数传入,是函数吃进去的食物,而函数return的返回值,是函数拉出来的结果,面向过程的思路就是,把程序的执行当做一串首尾相连的函数,一个函数吃,拉出的东西给另外一个函数吃,另外一个函数吃了再继续拉给下一个函数吃。。。

面向过程:机械式思维,流水线式编程

例如: 用户登录流程:前端接收处理用户请求-》将用户信息传给逻辑层,逻辑词处理用户信息-》将用户信息写入数据库 验证用户登录流程:数据库查询/处理用户信息-》交给逻辑层,逻辑层处理用户信息-》用户信息交给前端,前端显示用户信息

array=[1,3,4,71,2]ret=[] for i in array:  ret.append(i**2) print(ret)

#如果我们有一万个列表,那么你只能把上面的逻辑定义成函数

def map_test(array):    ret=[]    for i in array:        ret.append(i**2)    return ret print(map_test(array))

#如果我们的需求变了,不是把列表中每个元素都平方,还有加1,减一,那么可以这样#可以使用匿名函数 print(map_test(lambda x:x-1,array))

def add_num(x):    return x+1def map_test(func,array):    ret=[]    for i in array:        ret.append(func(i))    return retprint(map_test(add_num,array))

 

上面就是map函数的功能,map得到的结果是可迭代对象

print(map(lambda x:x-1,range(5)))

 

二.包于模块:

1.1模块的使用 import   示例文件:spam.py,文件名spam.py,模块名spam

 #spam.py  print('from the spam.py')    money=1000    def read1():      print('spam->read1->money',money)    def read2():      print('spam->read2 calling read')      read1()    def change():      global money      money=0

执行调用是添加import spam  import spam #只在第一次导入时才执行spam.py内代码,此处的显式效果是只打印一次'from the spam.py',当然其他的顶级代码也都被执行了,只不过没有显示效果.  import spam  import spam  import spam    '''  执行结果:  from the spam.py

1.2 模块请用别名 import spam as sm print(sm.money)

1.3 导入多个模块 import sys,os,re

1.4 * 跟— 的作用  

from spam import * 把spam中所有的不是以下划线(_)开头的名字都导入到当前位置,大部分情况下我们的python程序不应该使用这种导入方式,因为*你不知道你导入什么名字,很有可能会覆盖掉你之前已经定义的名字。而且可读性极其的差,在交互式环境中导入时没有问题。  

from spam import * #将模块spam中所有的名字都导入到当前名称空间 print(money) print(read1) print(read2) print(change)

''' 执行结果: from the spam.py 1000 <function read1 at 0x1012e8158> <function read2 at 0x1012e81e0> <function change at 0x1012e8268> 1.5把模块当做脚本执行 我们可以通过模块的全局变量__name__来查看模块名: 当做脚本运行: __name__ 等于'__main__'

当做模块导入: __name__=

作用:用来控制.py文件在不同的应用场景下执行不同的逻辑 if __name__ == '__main__'

三.模块加载路径 内存中已经加载的模块->内置模块->sys.path路径中包含的模块

3.1 运行Python应用或引用Python模块,Python解释器要有一个查找的过程。可以通过设置一个环境变量PYTHONPATH为Python增加一个搜索路径,以方便查找到相关Python模块(不同的操作系统环境变量的设置稍有不同,默认以下都是WIndows环境),这与众多应用程序需要设置一个系统环境变量的道理是一样的。在命令行中可以通过以下命令设置:

C:\Users\Administrator>set PYTHONPATH=E:/Project/Python/ModuleAndPackage/

进入Python环境后可以,通过Python的sys.path属性获得当前搜索路径的配置,可以看到之前我们设置的路径已经在当前搜索路径中了。 C:\Users\Administrator>python

Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import sys

>>> sys.path

['', 'E:\\Project\\Python\\ModuleAndPackage', 'C:\\Windows\\system32\\python27.zip', 'C:\\Python\\DLLs', 'C:\\Python\\lib', 'C:\\Python\\lib\\plat-win', 'C:\\Python\\lib\\lib-tk', 'C:\\Python', 'C:\\Python\\lib\\site-packages'] 也可以通过sys模块的append方法在Python环境中增加搜索路径。 >>> sys.path.append("E:\\Project\\Python\\ModuleAndPackage2")

>>> sys.path

['', 'E:\\Project\\Python\\ModuleAndPackage', 'C:\\Windows\\system32\\python27.zip', 'C:\\Python\\DLLs', 'C:\\Python\\lib', 'C:\\Python\\lib\\plat-win', 'C:\\Python\\lib\\lib-tk', 'C:\\Python', 'C:\\Python\\lib\\site-packages', 'E:\\Project\\Python\\ModuleAndPackage2']

>>> 四、Python中的模块和包 包(package)

为了组织好模块,将多个模块分为一个包。包是python模块文件所在的目录,且该目录下必须存在__init__.py文件。常见的包结构如下:

package_a├── __init__.py├── module_a1.py└── module_a2.pypackage_b├── __init__.py├── module_b1.py└── module_b2.pymain.py

 

•如果main.py想要引用packagea中的模块modulea1,可以使用: from package_a import module_a1 import package_a.module_a1

•如果packagea中的modulea1需要引用packageb,那么默认情况下,python是找不到packageb。我们可以使用sys.path.append('../'),可以在packagea中的__init__.py添加这句话,然后该包下得所有module都添加* import __init_即可。

转载于:https://www.cnblogs.com/wangshaojie/p/7263854.html

你可能感兴趣的文章
使用 postman 调试 jwt 开发的接口
查看>>
Xcode可删除文件列表
查看>>
使用SAPGUI画图
查看>>
Event loop (JavaScript中的执行机制)
查看>>
iOS新建推送证书无法生成p12文件的解决办法
查看>>
动态索引之B树和B+树
查看>>
高效开发者是如何个性化VS Code插件与配置的?
查看>>
JavaScript模块化
查看>>
passportjs 源码分析
查看>>
程序员提升学习效率的3个方法,影响过整个世界进程!
查看>>
CSS 选择器
查看>>
目前可用的微博秀的嵌入方法大全(亲测2019年2月仍有效)
查看>>
2019年微服务5大趋势,你pick哪个?
查看>>
CNCF案例研究:京东
查看>>
JS中数据类型、内置对象、包装类型对象、typeof关系
查看>>
对是否要用Linux的思考
查看>>
TypeScript--安装依赖,vscode配置ts自动转换成js文件
查看>>
SpiderData 2019年2月15日 DApp数据排行榜
查看>>
Core dump调试小记(暂时未解决)
查看>>
用Python写一份独特的元宵节祝福
查看>>