模块二

一、一个python文件有两种用途

# 1、被当成程序运行
# 2、被当做模块导入
二者的区别是什么
if __name__ == '__main__':
    print('文件被执行了')
else:
    print('文件被引用了')

二、导入模块

1.impot导入模块在使用时必须加前缀"模块."

# 优点:肯定不会与当前名称空间中的名字冲突
# 缺点:加前缀显得麻烦

2.from ... import ...导入也发生了三件事

# 1、产生一个模块的名称空间
# 2、运行foo.py将运行过程中产生的名字都丢到模块的名称空间去
# 3、在当前名称空间拿到一个名字,该名字与模块名称空间中的某一个内存地址
# from foo import x # x=模块foo中值0的内存地址

# from...impot...导入模块在使用时不用加前缀
# 优点:代码更精简
# 缺点:容易与当前名称空间混淆

3.导入模块中的所有名字

from foo import *
了解:__all__
__all__=['x',] # 控制*代表的名字有哪些

4.起别名

from foo import get as g
print(g)

三、模块的搜索路径

# 无论是import还是from...import在导入模块时都涉及到查找问题
# 优先级:
# 1、内存(内置模块)
# 2、硬盘:按照sys.path中存放的文件的顺序依次查找要导入的模块

# import sys
# 值为一个列表,存放了一系列的对文件夹
# 其中第一个文件夹是当前执行文件所在的文件夹
# print(sys.path)

了解:sys.modules查看已经加载到内存中的模块
print('foo' in sys.modules)
print(sys.modules)

四、函数的类型提示(最低python版本为3.5)

def register(name:"必须传入名字傻叉",age:1111111,hobbbies:"必须传入爱好元组")->"返回的是整型":
 print(name)
 print(age)
 print(hobbbies)
 return 111

# register(1,'aaa',[1,])    #还是可以输入其他 ,但会很low
# res=register('egon',18,('play','music'))
# res=register('egon',19,(1,2,3))

print(register.__annotations__)  #查看提示
原文地址:https://www.cnblogs.com/chenyoupan/p/12592655.html