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.必须参数:这是指代的是函数定义时候的参数顺序和个数。
 
defget_result(x,y): 
result = x + y
return result
result = get_result(,) #这1 , 2 分别给 x , y 就是必须参数
print(result)
 
2.关键字参数:这在于函数的调用,而不是函数的定义。
defget_result(x,y):
result = x + y
return result
result = get_result(,) #需考虑赋值顺序
print(result)
result2 = get_result(, )  # 这就是关键字参数,在于函数调用时候,不用考虑赋值顺序。
print(result2)
 
以上两个参数类型,只是在函数调用时候的不同,而参数定义是一样的。

Python 包、模块、函数、变量作用域的更多相关文章

  1. 函数变量作用域(python)

    收集参数:该参数个数不确定 >>> def test(*params): print('参数的长度是:', len(params)); print('第二个参数是:', params ...

  2. Python进阶(二)----函数参数,作用域

    Python进阶(二)----函数参数,作用域 一丶形参角度:*args,动态位置传参,**kwargs,动态关键字传参 *args: ​ 动态位置参数. 在函数定义时, * 将实参角度的位置参数聚合 ...

  3. Python进阶(三)----函数名,作用域,名称空间,f-string,可迭代对象,迭代器

    Python进阶(三)----函数名,作用域,名称空间,f-string,可迭代对象,迭代器 一丶关键字:global,nonlocal global 声明全局变量: ​ 1. 可以在局部作用域声明一 ...

  4. 2015/9/19 Python基础(15):变量作用域及生成器

    变量作用域标识符的作用域是定义为其声明的可应用范围,或者即是我们所说的变量可见性.也就是,我们可以在程序的那个部分去访问一个制定的标识符.全局变量与局部变量定义在函数内的变量有局部作用域,在一个模块中 ...

  5. Python基本语法_变量作用域LEGB

    目录 目录 软件系统 变量的作用域 高级语言对数据类型的使用过程 作用域的产生 作用域的类型 Llocal局部作用域 Eenclosing嵌套作用域 Gglobal全局作用域 Bbuilt-in内置作 ...

  6. Python基础:11变量作用域和闭包

    一:变量作用域 变量可以是局部域或者全局域.定义在函数内的变量有局部作用域,在一个模块中最高级别的变量有全局作用域. 全局变量的一个特征是除非被删除掉,否则它们的存活到脚本运行结束,且对于所有的函数, ...

  7. python学习day10 函数Ⅱ(参数&作用域)

    函数Ⅱ(参数&作用域) 知识小结: py2与py3的区别 逻辑运算()>not>and>or 字符串翻转切片翻转 is与==区别 git相关 数据类型判断 操作系统:cent ...

  8. Python基础3 函数 变量 递归 -DAY3

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

  9. JavaScript-4.2函数,变量作用域---ShinePans

    <html> <head> <meta http-equiv="content-type" content="text/html;chars ...

  10. JavaScript函数变量作用域

    变量作用域 在JavaScript中,用var申明的变量实际上是有作用域的. 如果一个变量在函数体内部申明,则该变量的作用域为整个函数体,在函数体外不可引用该变量. 如果两个不同的函数各自申明了同一变 ...

随机推荐

  1. 612.1.003 ALGS4 | Stacks and Queues

    Algorithm | Coursera - by Robert Sedgewick Type the code one by one! 不要拜读--只写最有感触的!而不是仅仅做一个笔记摘录员,那样毫 ...

  2. redis 集群目标、集群查看、配置方法及过程、哨兵配置启动

    集群目标 主从复制,读写分离:故障切换(通过哨兵实现) 查看集群状态 info replication 配置方法 只设置从数据库就可以了:最佳实践,在主数据库配置masterauth <mast ...

  3. C语言图形编程

    四.图形和图像函数(一) 像素函数    56. putpiel() 画像素点函数    57. getpixel()返回像素色函数(二) 直线和线型函数    58. line() 画线函数    ...

  4. LGWR和DBWn的触发条件

    Rolling Forward(前滚) Oracle启动实例并加载数据库,然后通过Online Redologs中的重做日志,重现实例崩溃前对数据库的修改操作.在恢复过程中对于已经提交的事务,但尚未写 ...

  5. Object 类型

    Object 类型 ECMAScript中大多数的引用类型都值都是Object类型的实例,Object也是使用最多的一个类型,主要用来在程序中存储和传输数据 创建Object实例的两种方式 使用new ...

  6. shell_basic

    1.回顾基础命令 2.脚本 3.变量 4.别名 5.条件判断 6.test判断   一.回顾基础命令 shutdown --关机/重启 exit --退出当前shell rmdir --删除空目录 d ...

  7. Prometheus Node_exporter 之 CPU Memory Net Disk

    1. CPU type: GraphUnit: shortmax: "100"min: "0"Label: PercentageSystem - cpu 在内核 ...

  8. python基础_类型_list

    #list 类似数组array,以[]扩起来逗号分隔 a = ['a','b','c'] #常用函数 a.append('c') #在list最后增加一个元素,结果是['a','b','c','c'] ...

  9. python安装lib库

    time:2015/11/11 双十一 一.初衷 看到一篇帖子[1],里面有python代码,就想实现一下,代码如下: import cv2 as cv import numpy as np from ...

  10. (转)Matlab增加块注释

    1)方法一选中你要加注释的内容,然后选择工具菜单“text|comment”就可以了,如果要把注释变为语句,同样选中要转变的语句,然后用鼠标选择“text|uncomment”就可以了.用键盘的快捷键 ...