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. css动画和jq动画的简单区分

    有很多不怎么用css3写动画的同学经常会对其中css3的transform,transition,translate,animation,@keyframes等等动画属性混淆错乱,经常使用了发现没有效 ...

  2. Keras & Theano 输出中间层结果

    Keras & Theano get output of an intermediate layer 1.使用函数模型API,新建一个model,将输入和输出定义为原来的model的输入和想要 ...

  3. 使用MaxCompute访问TableStore(OTS) 简明手册

    摘要: 大数据计算服务 MaxCompute 能够提供强大的分析能力,而分布式 NoSQL 数据库表格存储在行级别上的实时更新和可覆盖性写入等特性,相对于 MaxCompute 内置表 append- ...

  4. dbms_random 包的使用

    dbms_random是一个可以生成随机数值或者字符串的程序包. 这个包有 initialize(),seed(),terminate(),value(),normal(),random(),stri ...

  5. zabbix使用问题

    1中文乱码 https://www.linuxidc.com/Linux/2017-08/146162.htm 软件 说明 备注 zabbix 3.4.7 操作系统 Centos7 问题描述:图表内容 ...

  6. 数据契约(DataContract)里的DataMember特性

      数据契约(DataContract) 服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型. 一旦声明一个类型为DataContract,那么该类型就可 ...

  7. Oracle EBS PO退货失败

    无法读取例程 &ROUTINE 中配置文件选项 INV_DEBUG_TRACE 的值. 系统-配置文件-地点层 INC%调试%踪 是 select *  from po_interface_e ...

  8. 在html的JavaScript部分计算,保留小数点后面的位数

    例: f_pbf = ((f_boday_fat/f_weight)*100).toFixed(1);      注:例子中的.toFixed(1)是所用函数,确保在所得结果中保留小数点后面一位数,若 ...

  9. DES加密(支持ARC与MRC)

    DES加密(支持ARC与MRC) 源文件: YXCrypto.h 与 YXCrypto.m // // YXCrypto.h // 用秘钥给字符串加密或者解密 // // Created by You ...

  10. C 转义字符说明

    %a(%A) 浮点数.十六进制数字和p-(P-)记数法(C99)%c 字符%d 有符号十进制整数%f 浮点数(包括float和doulbe)%e(%E) 浮点数指数输出[e-(E-)记数法]%g(%G ...