命名空间:   
 
Python使用叫做命名空间的东西来记录变量的轨迹。命名空间是一个字典(dictionary),它的键就是变量名,它的值就是那些变量的值。


在一个 Python 程序中的任何一个地方,都存在几个可用的命名空间。


     1、每个函数都有着自已的命名空间,叫做局部命名空间,它记录了函数的变量,包括函数的参数和局部定义的变量。
 
     2、每个模块拥有它自已的命名空间,叫做全局命名空间,它记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。
 
     3、还有就是内置命名空间,任何模块均可访问它,它存放着内置的函数和异常。

 
命名空间查找顺序:


当一行代码要使用变量 x 的值时,Python 会到所有可用的名字空间去查找变量,按照如下顺序:


     1、局部命名空间:特指当前函数或类的方法。如果函数定义了一个局部变量 x,或一个参数 x,Python 将使用它,然后停止搜索。
 
     2、全局命名空间:特指当前的模块。如果模块定义了一个名为 x 的变量,函数或类,Python 将使用它然后停止搜索。
 
     3、内置命名空间:对每个模块都是全局的。作为最后的尝试,Python 将假设 x 是内置函数或变量。
 
     4、如果 Python 在这些名字空间找不到 x,它将放弃查找并引发一个 NameError 异常,如,NameError: name 'aa' is not defined。

 
模块:


1、直接使用import  模块名(模块在默认搜索路径下)


注:直接使用import时,在使用函数时需要加上模块的命名空间。即:在使用该模块下的函数时,需要加上模块名

(模块名.函数名)同时调用多个模块时,可以将模块间用逗号隔开:import math,random


python:模块、别样赋值


2、from 模块名 inport 函数名(模块在默认搜索路径下)



注:使用此方法调用函数时,可以直接使用函数(不需要加上函数的命名空间)


需要同时调用同一模块下的不同函数时可以将函数间用逗号隔开:from math import fabs,ceil


python:模块、别样赋值


3、import 模块名 as 新名字


注:在使用该模块下的函数时,需要加上模块名(模块名.函数名)


python:模块、别样赋值


搜索路径:

python模块的导入需要一个路径搜索的过程(告诉函数或模块在哪个位置)。python中由许多默认的搜索路径.

set-packages,libs等,如果模块直接在这些默认的搜索路径下则可以直接调用模块(不需要加上搜索路径),若模块没有在这些搜索路径下则需要加上模块的搜索路径。


包:

所谓的包就是为了有效的管理模块,将模块分门别类的放在不同的文件夹下。


创建一个包:



1、创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字


2、在文件夹下创建一个__init__.py的模块文件,内容可以为空。用来告诉python将该目录当成一个包来处理。


3、将相关的模块放入文件夹中



导入包中的模块:


1、import 包名(包路径).模块名

注:在使用该模块下的函数时,需要加上模块名(模块名.函数名)

python:模块、别样赋值

2、from 包名(包路径) import 模块名
注:在使用该模块下的函数时,需要加上模块名(模块名.函数名)

python:模块、别样赋值


3、from 包名(包路径).模块名 import 函数名

注:使用此方法调用函数时,可以直接使用函数

python:模块、别样赋值


路径:


例:from selenium.webdriver.common.keys import Keys


1、在导入模块时,若模块不在pothon的默认搜索路径下,则在导入模块时需要加上模块所在的包名(搜索路径)


2、上面的例子中selenium.webdriver.common为包在默认搜索路径(set-packages)下的路径。keys为模块名。Keys为函数名





if __name__ == '__main__':


作用:一般我们在写代码的时候,会在代码中加入测试代码,如果我们将这些代码作为模块导入到其他文件中时,
就有可能将我们的测试代码一起执行,所以当我们使用 if __name__ = '__main__'时,就不会执行我们的测试代码了


总结:
1、当作为程序运行时,__name__的属性值为'__main__',而作为模块导入时__name__的值就是该模块的名字了


2、当__name__ == '__main__'表示直接执行,即会执行测试代码(执行其本身),反之则表示已作为模块导入,不会执行测试代码


python:模块、别样赋值



python:模块、别样赋值


序列解包:



1、在python中交换所做的事情叫做序列解包,即将多个值的序列解开,然后放到变量序列中。

python:模块、别样赋值


2、解包序列中的元素数量必须和放置在赋值符号" = "左边的数量完全一致


3、将多个值赋予多个变量,只需要用逗号把变量和值隔开,并且等号右边的值的数量和变量的数量一致


python:模块、别样赋值


增量赋值:

即加减乘除的简写

python:模块、别样赋值

相关文章: