第十五天
Posted xueba
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十五天相关的知识,希望对你有一定的参考价值。
动态获取函数名
def wrapper():
pass
def aa(f):
print(f.__name__)
aa(wrapper)
自定义模块
什么是模块:
本质就是py文件,封装语句的最小单位,一个py文件就是一个模块
自定义模块:
实际上就是定义py,其中可以包含:定义变量,可执行语句,for 循环 函数定义 等等 他们统称模块的成员
模块的运行方式:
1.脚本模式
直接用解释器执行.或者pycharm中右键运行
2.被其他模块导入
为导入它的模块提供资源(变量,函数定义,)
//自定义模块被其他模块导入时,其中的可执行语句会立即执行
_ _ name _ _ 属性的使用
脚本方式运行时 _ _name 固定的字符串 : main__
以导入方式运行时 _ _name__就是本模块名字
if __name__ =="__main__": #测试阶段
if __name__ =="a": #模块调用阶段
print("我是模块")
系统导入模块的路径 3个
如果三个都找不到,报错
内存中:如果之前成功的倒入过某个模块, 直接使用已存在的模块
内置路径下: 安装路径下:lib 下载 的 :site-packages
sys.path : 是一个路径的列表
? 查看 sys.path的内容
import sys: print(sys.path)
添加a.py 所在路径到 sys.path中
import sys:
print(sys.path)
sys.path.append(r'd:python_22day15aa') #绝对位置
#使用相对位置找aa文件夹
print(__file__) #当前文件的绝对路径
使用OS模块获取一个路径的父路径
import os
import sys
print(os.path.dirname(__file__)+"/aa")
###直接出来 d:python_22day15aa
sys.path.append(os.path.dirname(__file__)+"/aa")
导入模块的多种方式
import xxx :
导入模块的所有成员
import xx.bbb:
一次性导入多个模块的成员,不推荐这种写法 分开写
(一荣俱荣一焚俱焚)
from xxx import a:
从某个模块当中导入指定成员
from xxx import a,b,c:
从某个模块中导入多个成员
from xx import *:
从模块中导入所有成员
起别名 import a as ccc
原名字 a
新名字 ccc
import xxx :和 from xx import *: 的区别
第一种方式 使用成员时,必须使用模块名作为前缀
不容易产生命名冲突
第二种方式在使用成员时,不使用模块名字作为前缀
直接使用成员名.但容易产生冲突.在后定义的成员生效
(把前面的覆盖了)
怎么解决名称冲突
改用import xxx
避免使用同名
使用别名解决 alias
? from a import ck as t:
各成员起别名,避免名称冲突
给模块起别名,目的简化书写
from xx import *:控制成员被导入
默认情况下,所有成员都会被导入
_ _all__ 是一个列表, 用于表示本模块可以被外界使用的成员.元素是成员的字符串
**使用_ _all__ 控制那些成员外界可以使用**
_ _all__ 只对 from xx import * 生效 其他方式不生效
def ck():
print("ckckck")
def ck1():
print("ckckck")
def ck2():
print("ckckck")
def ck2():
print("ckckck")
a=10
b=20
__all__=["ck","ck1","a"]
?
相对导入---成功了
////简单来说
asd 引用了zxc 然后c调用asd
a中使用(. .. ...) 不能直接使用的!!!!!!!
asd.py
from .zxc import *
age2=10
zxc.py
def ccc():
print("asdas")
pass
c.py
from test import asd
print(asd.age2)
asd.ccc()
次模块作为对外引用的入口
相对导入同项目下的模块
from..z import zz
相对路径:包含了点号的相对路径
. 表示的是当前的路径。
..表示的是父路径。
...表示的是父路径的父路径。
注意相对导入不能再执行文件中使用
相对导入只能在被导入的模块中使用,使用相对导入 就不需要考虑
执行文件到底是谁 只需要知道模块与模块之间路径关系
"""
常用模块:random
随机数
random.random() [0,1) 0取到 1取不到
random.randint(a,b) [a,b] ab 都取到
random.uniform(a,b) [a,b) a 取到 b 取不到
random.shuffle(x) 把参数指定的数据中的元素打乱 参数必须是一个可变的数据类型
import random
lst=list(range(1,10))
random.shuffle(lst)
print(lst)
random.sample(x,k) 从x中抽取k个数据,组成一个列表返回
import random
lst=list(range(1,10))
print(random.sample(lst, 3))
以上是关于第十五天的主要内容,如果未能解决你的问题,请参考以下文章