Python 包、模块、函数、变量作用域

Python 项目的组织结构
- 包
-- 模块
--- 类
---- 函数、变量
 
Python是利用包和模块来组织一个项目的。
 
包: 包的物理表现是一个文件夹,但是一个文件夹却不一定是个包,要想让个文件夹成为一个包,就必须在这个文件夹下增加个特定的文件 __init__.py
__init__.py里面可以什么也不写,只是纯粹来标注这个文件夹是个包。 也可以在这个文件里编写代码。
对于模块的名字:包名.模块名
对于__init__.py模块的名字:直接是包名
 
 
导入有两种方式:
 
1、导入模块:import 模块名
若在模块A中想用到B模块的变量b,那么在A中import B 之后,需要使用模块名来点出来变量名:B.b
在模块A中:
import B
print(B.b)
 
2、from 模块名 import 变量名,函数
  在模块A中:
  from B import b  
 可直接使用 print(b),而不用使用前缀
 
import导入的是模块,from import导入的是具体的变量或者函数,因此使用from import 就不用使用前缀了。
但是!也可以使用 from 包名  import 模块名   然后在A模块中使用 B.b 。。。。
比如:B模块在C包中,C包和A模块是平级的
在A模块中使用:
from C import B
print(B.b)
 
若是B中有大量的变量需要导入,那么可以用  *  号来指代。
但是如此,便将B中的所有都导入A中了。
其实可以在B中进行指定,哪些变量可以通过 * 号来进行导入到其他文件
在B文件的顶部,使用 __ALL__=['变量名a',‘变量名b’] ,这样在A文件中使用 from B import * 的时候,只会将B中的 a b 两个变量导入A
 
其实吧,也可是使用 from B import a,b,c  但是呢,Python的规范是一行字符个数不超过80,若是需要导入变量过多就要换行
Python代码换行问题:
方式一:在需要换行的结尾加上反斜杠  \   然后换行
方式二:在被导入变量的外部加上括号来换行 
 
 
__inti__.py的作用:
基本作用 :import 导入包的时候,python会自动运行__init__.py文件
应用场景:做一些初始化工作
不论是导入包还是导入包中某个模块的变量,都会自动于运行init文件
 
init 文件中也可使用 __all__ = ['模块名'],来指定当此包之外的某模块使用 from 包名 import * 的时候,会import 进 __all__指定的模块

 

函数的参数:

 
1.必须参数:这是指代的是函数定义时候的参数顺序和个数。
 
def get_result ( x , y ): 
result = x + y
return result

result = get_result( 1 , 2 #这1 , 2 分别给 x , y 就是必须参数
print (result)
 
2.关键字参数:这在于函数的调用,而不是函数的定义。
def get_result ( x , y ):
result = x + y
return result

result = get_result( 1 , 2 ) #需考虑赋值顺序
print (result)

result2 = get_result( y = 2 , x = 1 )  # 这就是关键字参数,在于函数调用时候,不用考虑赋值顺序。
print (result2)
 
以上两个参数类型,只是在函数调用时候的不同,而参数定义是一样的。



猜你喜欢

转载自www.cnblogs.com/wfy-it/p/b340b2fca4afbb4e9e8f43ebfb352e6d.html