标签:重复 创建 自定义 str 别名 read 功能 怎么 一个
什么是模块? ->别人已经写好的一组功能的集合。
别人写好的函数,变量,方法放在一个文件里. (这个文件可以被我们直接使用)这个文件就是模块。
import os,re,sys,random#alt点进去可以看到都是py文件但也有dll文件(c语言代码编译成的py代码).所以直接写py文件即可。
如何自己写一个模块?->创建py文件,自己写一个名字,符合变量名命名规则+汉字的文件名,这个名字就是模块名了。
#__all__ = [‘name‘]
print(‘123456‘)
name = ‘negu‘
def read():
print(‘in read in funcread‘)
def read1():
print(‘in read in funcread‘,name)
import my_modulemy module下面有波浪线的原因,pycharm认为你模块导入不进来,因为pycharm只识别项目下面的模块。
#在导入模块的过程中发生了什么?
#导入一个模块就是执行一个模块.
#怎么使用my_module模块中的变量
name = ‘negu‘
print(name)#negu 找自己的内存空间
print(my_module.name)#negu 找my_module的内存空间
my_module.read()#成功执行
#模块和当前文件在不同的命名空间中
#模块在导入的过程中发生了什么?
#找到这个模块
#判断这个模块是否已经被导入过
#如果没有被导入过
#创建一个属于这个模块的命名空间
#然后让模块的名字指向这个空间再执行这个模块的代码
#模块是否可以被重复导入?不可以,不会被执行.
#怎么判断这个模块已经被导入过了?
import sys
print(‘my_module‘ in sys.modules)#用这个判断
my_module.read1()#显示negu 用自己同级命名空间下的name
#导入多个模块
#给模块起别名,使用这个模块都使用别名去引用变量了.
import my_module as m
m.read()
my_module.read()#报错,第一步让去找my_module的空间,让m指向这个空间.
def squence(dic,modules = ‘json‘):#序列化方案的选择
if modules == ‘json‘:
import json as aaa
elif modules == ‘pickle‘
import pickle as aaa
return aaa.dumps(dic)#导入模块做相同的事的时候用于简化代码
#导入多个模块
import os as o,time as t#规范建议,模块应该一个个的导入:自定义模块,第三方模块,内置模块,而不是在一行导入多个.
#导入顺序:内置,第三方,自定义模块#这样做的原因是为了看我代码的人,可以分辨出自定义模块.
# 如何使用from import?
# 需要从哪个文件使用某个名字,就把那个名字导入进来.
from my_module import name #import 了谁只能用谁.
from my_module import read1
from my_module import read
from import 发生了什么?是否执行了整个被导入的文件呢?
from import 还是会执行模块主程序的程序
read1()#打印了negu ,read1里面有name 外面就不能用
read()
#当前文件命名空间和模块名命名空间的问题
from my_module import read
from my_module import read1
def read1():#到此处主程序的read1断开了my_module命名空间里的read1的链接.
print(‘main read1‘)
read1()#执行主程序的read1,主程序的read1覆盖了模块的read1
from my_module import read
read()
‘‘‘
from import 导入的过程中发生了什么事?
找到要被导入的模块
判断这个模块是否被导入过
如果这个模块没被导入过
创建一个属于这个模块的命名空间,然后执行这个文件.
找到你要导入的变量,给你要导入的变量创建一个引用指向要导入的变量.(在自己的空间里创建)
‘‘‘
# 如何导入多个名字?
from my_module import read as r,read1 as r1
r()
r1()
# from my_module import *#在导入过程中内存的引用变化
from my_module import *#代表把所有东西都导入到主空间进来了,直接用即可。
#* 和__all__的关系
from my_module import *
print(name)
read()
read1()#报错,*会参考__all__变量,__all__只有name,所以只导入了name.__all__只能约束*
标签:重复 创建 自定义 str 别名 read 功能 怎么 一个
原文地址:https://www.cnblogs.com/negu/p/11739870.html