模块的简介:
要求模块的名称?是?小写字母。
这就是一个模块。?即Python file
用from...import导入的变量/函数/类/* 可以直接使用。? *表示导入所有,是一个通配符。
可以用逗号来一次性导入多个模块。
????????两个模块有同名的函数,后导入的会覆盖,也就是说如果直接用名字会调用后导入的,但是可以用模块名打点调用。
----------------------------- '''1-1 example.py''' import my_info,my_info2 print(my_info.name) #print(name) 不可以直接用,导入模块,则必须用模块名打点调用其中的内容 my_info.info() ----------------------------- '''1-2 example.py''' import my_info as a my_info.info() a.info() ----------------------------- '''1-3 example.py''' from my_info import name #导入的是一个具体的变量,只导入它,可以用名字直接调用,也可以打点调用 print(my_info.name) #my_info.info() 这是不行的,因为它根本没有被导入 from my_info import info info() ----------------------------- '''1-4 example.py''' from my_info import * info() print(name)
你会发现虽然仅仅是导入了info这个函数,但是info里面会访问my_info模块中的变量,这也是可行的!
from my_info import info info()
直接导入,类似于直接将代码copy到这个地方了(输入输出语句会直接执行),不过不一样的是,直接导入里面的变量名,函数名等遇到打点调用,相当于导入了一个名字空间一样=-=
if __name__ == '__main__': pass
①当__name__在当前执行的文件中使用时,它的值等于'__main__',所以if __name__ == '__main__'结果为true,所以 if __name__ == '__main__'下的代码会被执行。
②当__name__不在当前执行文件中,而是在导入的其它文件中时,其值为被调用模块所在的路径,此时if __name__ == '__main__'结果为false,所以 if __name__ == '__main__'下的代码不会被执行。name='yore' def info(): print(f"{name}") print(name) if __name__ == '__main__': print(123123)
在一个模块中使用if __name__ == '__main__',可以阻隔其他模块导入时执行这些语句,而只执行全局环境下的语句,比如上面的模块中,本模块执行会输出:
yore
123123
但是其他模块直接导入,只会输出:
yore
模块可以避免,函数/类/变量名称相冲突的问题。
包可以避免,模块名称相冲突的问题。
在导入包中的模块时,包中的__init__模块会被自动执行一次,多次导入也只执行一次。
import random random.seed(10)#随机种子相同,产生的随机数相同,不同次执行产生的随机数相同 print(random.random()) print(random.random()) print(random.randint(0,100)) for i in range(10): print(random.randrange(1,10,3),end=' ') print() #[1,10)步长为3的整数中 随机产生,一个 即从{1,4,7}中随机产生一个 print(random.uniform(1,100)) lst=[i for i in range(1,11)] print(random.choice(lst)) #lst是列表,称为序列 random.shuffle(lst) print(lst) ''' 0.5714025946899135 0.4288890546751146 73 1 1 4 4 4 7 1 1 7 4 33.44950835058722 4 [9, 4, 10, 3, 5, 2, 8, 7, 1, 6] '''
little
pip命令,是一个可执行文件。
爬虫里用得多。