day24-2018-11-19-模块语法
# 1. 可以把代码进行分类. # 2. 可以实现代码的重用. # import random # 一次性把模块所有内容导入 # from random import randint # 把模块加载。 导入randint # # # random.randint() # randint()
import random # 当你不确定你要用到什么 from random import randint # 当你确定你要用到的东西 from urllib.request import urlopen urlopen() from collections import Iterable, Iterator from abc import ABCMeta, abstractmethod print(globals()) print(randint(1,10)) def chi(): a = 10
main_person_man = "郭靖" main_person_woman = "黄蓉"
__all__ = ["main_person_man", "bad_person_one"] print("片头曲....啦啦啦啦啦啦啦啦啦啦啦......") main_person_man = "张无忌" main_person_woman = "赵敏" bad_person_four = "宋青书" bad_person_one = "陈友谅" bad_person_two = "灭绝师太" bad_person_three = "周芷若" def fight_on_light_top(): # global main_person_man # global py文件 # main_person_man = "五十开" print("围攻光明顶%s粉碎了%s的重大阴谋" % (main_person_man, bad_person_two)) def fight_in_shaolin(): print("屠狮大会%s又粉碎了%s的阴谋" % (main_person_man, bad_person_three)) print("片尾曲.....哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈。。。。。") print(__name__) class Car: def run(self): print("我的车会跑 ")
# # # 查找模块的路径 # # import sys, os, re # # # # import flask, django # # # # import yitian # # # # # # # print(sys.path) # # # # # # # 导入模块的时候会有三个动作 # # # 1. 先去sys.modules中查看当前导入的模块是否已经被导入. # # # 如果该模块已经导入。 则不会重复导入 # # # 2. 开辟一个段内存空间。 在该空间中执行模块中的代码 # # # 3. 给该空间一个名称。 把该名称引入到当前模块中 # # import yitian # # import yitian # # import yitian # # import yitian # # from yitian import fight_in_shaolin # # # # # main_person_man = "张翠山" # # # yitian.main_person_man = "张翠山" # # # # # # yitian.fight_on_light_top() # # # # # print("金庸.......") # # # print(yitian.main_person_man) # 使用模块名可以直接访问模块中的内容 # # # print(yitian.main_person_woman) # # # # # 每个模块都有自己的global # # import re # # # def chi(): # # # global main_person_man # # # main_person_man = "胡辣汤" # # # # # # chi() # # # print(main_person_man) # # # # # # yitian.fight_on_light_top() # # # print(main_person_man) # # # # def biwuzhaoqin(): # # print("%s 攻击%s, 获得了%s的青睐" % (yitian.main_person_man, yitian.bad_person_four, yitian.bad_person_three)) # # # # # __name__可以屏蔽掉一些测试代码 # # # __name__ 如果该模块是启动模块, 值是__main__ # # # 如果该模块是被导入的。 值是模块名 # # # print(__name__) # # # # # # # # if __name__ == '__main__': # 程序的入口 # # print("你吃了么") # # biwuzhaoqin() # # print("吃饱了挨揍") # # # # from yitian import main_person_man, fight_on_light_top # # # # main_person_man = "灭绝" # # print(main_person_man) # # fight_on_light_top() # ? 张无忌, 灭绝 # # import yitian # yitian.main_person_man = "灭绝" # 一般不要这么干 # # import random # random.randint = lambda :10086 # # print(random.randint()) # import sys # print(sys.path) # # import yitian # import shediao # print(yitian.main_person_woman) # from yitian import main_person_man, main_person_woman# 在导入的时候如果对方写了__all__ # print(main_person_man) # print(main_person_woman) # print(globals()) # # from shediao import main_person_man, main_person_woman # print(main_person_man) # print(main_person_woman) # print(globals()) # # print(main_person_man) # print(main_person_woman) import yitian a = 500 print(globals()) # 查看全局名称空间中的名字, 函数第二天 print(locals()) # a = 20 # def func(): # nonlocal # global a # 把全局引入到局部 # a = 10 # func() # print(a) # yitian.main_person_man = "123"
# import yitian as yt # # 导入模块可以给出一个别名, 原来的名字就用不了了 # import 金庸 as jy # import yitian, 金庸 as jy, time, json, pickle, re # print(globals()) # # # def miejuedazhanzhangwuji(): # # jy.biwuzhaoqin() # # print("%s 攻击%s, 为了%s" % (yitian.bad_person_two, yitian.main_person_man, yitian.bad_person_three)) # # # # if __name__ == '__main__': # # miejuedazhanzhangwuji() # # import yitian # import 金庸 # # yitian.fight_on_light_top() import yitian c = yitian.Car() c.run()