Python 模块(module)

#-----------------------模块------------------------------
#Python 模块(Module)是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
#模块让你能够有逻辑地组织你的 Python 代码段
#把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
#模块能定义函数,类和变量,模块里也能包含可执行的代码。

#自定义一个 python模块(sup) 需要在顶端引入 import sup  就可以调用sup这个模块里面的函数 类 变量了
#自定义sup模块下的代码
'''
def supname(str):
    print 'Hello:',str
    return
'''
sup.supname('Looked')  #输出:Hello: Looked
#一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。
#from....import
#form sup import sup里面的指定的部分到当前命名空间
#form sup import* 把一个模块的所有内容全都导入到当前的命名空间

#搜索路径
#当导入一个模块,Python 解析器对模块位置的搜索顺序是
#1.当前目录
#2.如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
#3.如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/

#命名空间和作用域
#变量是拥有匹配对象的名字(标识符)。命名空间是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典
#python 文件的名字就相当于与变量名,里面的 内容相当于 值
#一个python 的表达式 可以访问全局变量跟局部变量,如果局部变量跟全局变量 重名 那么局部变量会覆盖 全局变量
#每一个函数都有自己的命名空间。类的方法的作用域规则和通常函数的一样
#Python 会智能的猜测变量是全局变量还是局部变量,它假设在函数内赋值的变量都是局部变量
#因此如果要在函数内部定义一个全局变量 必须使用global 语句
#global VarName会告诉Python 这样Python就不会在局部命名空间里面找这个变量了 能够提升效率


Money = 2000      #定义一个变量Money值是2000
def AddMoney():   #自定义一个函数
     global Money  #如果没有声明 Money是全局变量 这个代码就会报错 系统会默认在函数内部找Money
     Money +=1

print Money
AddMoney()
print Money

#dir()函数
#dir() 函数一个排好序的字符串列表,内容是一个模块里定义过的名字。
#返回的列表容纳了在一个模块里定义的所有模块,变量和函数。
content=dir(sup)
print(content)
#特殊字符串变量__name__指向模块的名字,__file__指向该模块的导入文件名__package__命名空间

#globals(),locals()函数
#根据调用地方的不同,globals() 和 locals() 函数可被用来返回全局和局部命名空间里的名字。
#如果在函数内部调用 locals(),返回的是所有能在该函数里访问的命名。
#如果在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字。
#两个函数的返回类型都是字典。所以名字们能用 keys() 函数摘取。

#reload()函数
#当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。
#因此,如果你想重新执行模块里顶层部分的代码,可以用 reload() 函数。该函数会重新导入之前导入过的模块
#语法如下:
reload(sup) #sup要直接放模块的名字,而不是一个字符串形式

猜你喜欢

转载自www.cnblogs.com/louyi/p/12205127.html
今日推荐