方法一:from import导入
- from 源模块名 import 导入内容
- 导入内容为*代表把原模块整块导入(相当于把整个源模块搬入当前程序)
- 如下面示例,导入后会把print('源模块主程序执行的语句')也执行
- 解决方法:源模块主程序添加判定条件 if _ _name_ _== '_ _main_ _':
- print(_ _name_ _)打印运行的程序名字
- _ _main_ _表示当前程序
- 权限控制_ _ all_ _ = [可被调用的内容,'Classname','字符','函数名']
- 函数名不要加括号
- def mutl(),在里面写'mutl'
- m=10,在里面写'm'
- 需要什么(函数、变量、类等),导入什么
- 详细示例:
# from A import variable用法示例#下述两部分代码在同一dict下的不同python文件# 源模块 # 函数Am = 9n = 99def mult(): print(m * n)# 当前执行函数 函数Bfrom import_source import m, n, multprint(m, n)mult() 当前函数B输出内容为:# 9 99# 891# ---------------------------------------------------------------------------------# from A import *结果示例,解决A中主程序执行问题示例# 原模块 # 函数Am = 9n = 99def mult(): print(m * n)class Mathsign: def __init__(self): self.signa = '+' self.signb = '-' def printsign(self): print(self.signa, self.signb)# if _ _name_ _== '_ _main_ _':print('源模块主程序执行的语句') # 源模块主程序级别的语句# 比上一个示例多了源模块主程序级别的语句、和类,Mathsign# 当前执行函数 函数Bfrom import_source import *print(m, n)mult()signtotal = Mathsign()signtotal.printsign() 当前函数B输出内容:# 源模块主程序执行的语句# 9 99# 891# + -# ---------------------------------------------------------------------------------# 若将第31行注释取消,执行if _ _name_ _== '_ _main_ _':# 则第43行语句:源模块主程序执行的语句不会出现# ---------------------------------------------------------------------------------# 权限控制语句示例# 代码表示仅n和函数mult可以被from import导入__all__ = ['n', 'mult']m = 9n = 99def mult(): print(m * n)
- 43行结果说明,import*后会执行原函数A的主程序语句
- 第43、45行结果说明,输出语句(源模块主程序执行的语句),比值891先执行,源命令行分别为第36、38行,符合程序运行规律
- 第44、45行说明,调用模块正常使用原函数A的值和函数
方法二 import导入
- import A 导入内容
- 源主程序语句会执行,不设置权限控制
# 源模块m = 9n = 99def mult(): print(m * n)# 执行模块 import import_sourceprint(import_source.m, import_source.n)import_source.mult()
- 若导入内容A名字太长,可以使用import A as alias(alias是不和A有重复部分的别名)
- import person.clothes.money as person 是错误的
- eg import person.clothes.money as k 是正确的
其他相关知识
- 后导入内容会覆盖前导入内容
- 循环嵌套最后显示no define(套娃导入)
- 包下的_ _init_ _函数,导入包时被执行,导入多重包
四四频道