Python3(五) 包、模块、函数与变量作用域
一.Python项目的组织结构
最顶级的组织结构:包(文件夹)
第二个层级:模块(文件)
第三个层级:类
第四个层级:函数、变量(不属于组织结构,是类本身的特性)
二.Python包与模块的名字
1.区分不同包的同名模块:包名.模块名
形成的模块的路径叫做命名空间
2.一个包下面可以有子包,模块可以和包平级
3.普通文件夹想要变成包必须要有__init__.py文件
__init__.py本身也是一个模块,可以不写内容只是标注包
特殊的,__init__.py模块的名字就是包名
三.import 导入模块
对于重复的定义可以从其他模块里引用,不需要重复编写。
1.语法: import 模块名
若被导入模块在子包下面,要加上命名空间,语法:import 子包名.模块名
2.引用导入模块的某一个变量的语法:模块名.变量名
import t.c
print(t.c.a)
3.可以用as进行简写
import t.c as m
print(m.a)
#print(t.c.a)
四.from import
1.导入变量
from t.c import a
print(a)
#不需要写成print(t.c.a)
2.导入模块(不推荐)
from t import c
print(c.a)
3.引用大量变量时使用 * :
from c import *
4."*"会一次性的把模块下面所有的变量或者函数全部导入进来,但是在实际的编码过程中不太可能在引入的时候需要全部的变量,那么就需要我们控制 * 的行为,让 * 导入的时候只导入我们指定的变量。
#test1.c
__all__ = ['a','c'] #用内置变量__all__来控制 * 的选择范围
a = 1
b = 2
c = 3
d = 4 #test1.c2
from c import *
print(a)
print(c)
print(d) #d没有被打印,报错
运行结果:1 3
五.__init__.py 的用法
1.__init__.py文件的作用:
当包被导入时,init.py会首先自动被执行
#t.__init__.py
a = 'This is a __init__.py file'
print(a) #c11.py
import t #导入包t,t里面的__init__.py文件就会被自动执行 运行结果:This is a __init__.py file
假如不导入包,而是导入包里面模块的某个变量,init文件依旧会自动运行
#t.c7.py
__all__ = ['a','c']
a = 2
c = 3
d = 4 #c12.py
from t.c7 import a 运行结果:This is a __init__.py file
2. __init__.py的应用场景:
#t.__init__.py
__all__ = ['c7'] #初始化*,标明哪些模块被导出 #t.c7.py
__all__ = ['a','c']
a = 2
c = 3
d = 4 #t.c8.py
e = 2
f = 3
g = 4 #c11.py
from t import * #* 表示导入 t 包里的所有模块
print(c7.a) #c7在init中被定义,可引用
print(c8.e) #c8在init中未定义,不可引用 运行结果是2
3. __init__.py的重要作用
#t包下面的__init__.py
import sys #批量导入库,内置标准库
import datetime
import io #c13.py
import t
print(t.sys.path) #在这里插入代码片
六.注意要点
1.包和模块是不会被重复的导入的,只会执行一次
2.避免循环导入,不要形成闭环(多个模块之间形成闭环)
3.导入模块的时候会执行模块里所有的代码
Python3(五) 包、模块、函数与变量作用域的更多相关文章
- Go 入门 - 包,函数和变量
主要内容来自中文版的官方教程Go语言之旅 目的为总结要点 包,函数和变量 包 import 语法,多个用括号换行扩起,包之间不需要间隔符,用引号引起 import ( "fmt" ...
- Python(五) 包、模块、函数与变量作用域
一.while循环与使用场景 CONDITION=1 while CONDITION <=5 : CONDITION +=1 print("hello") else: pri ...
- Python 包、模块、函数、变量作用域
Python 项目的组织结构 - 包 -- 模块 --- 类 ---- 函数.变量 Python是利用包和模块来组织一个项目的. 包: 包的物理表现是一个文件夹,但是一个文件夹却不一定是个包, ...
- python 函数及变量作用域及装饰器decorator @详解
一.函数及变量的作用 在python程序中,函数都会创建一个新的作用域,又称为命名空间,当函数遇到变量时,Python就会到该函数的命名空间来寻找变量,因为Python一切都是对象,而在命名空间中 ...
- python学习笔记三:函数及变量作用域
一.定义 def functionName([arg1,arg2,...]): code 二.示例 #!/usr/bin/python #coding:utf8 #coding=utf8 #encod ...
- php自定义函数之变量作用域
我们通过前面的章节函数定义部份的学习我们知道了几个不同的规矩: 函数定义时后括号里面接的变量是形式上的参数(形参),与函数体外的变量没有任何关系.仅仅是在函数内部执行大理石量具哪家好 函数内声明的变量 ...
- Python入门笔记(22):Python函数(5):变量作用域与闭包
一.全局变量与局部变量 一个模块中,最高级别的变量有全局作用域. 全局变量一个特征就是:除非被删除,否则他们存活到脚本运行结束,且对于所有的函数都可访问. 当搜索一个标识符(也称变量.名字等),Pyt ...
- js:函数与变量作用域的提升
一.要彻底理解JS的作用域和Hoisting,只要记住以下三点即可: 1.所有申明都会被提升到作用域的最顶上 2.同一个变量申明只进行一次,并且因此其他申明都会被忽略 3 ...
- Python学习(21):Python函数(5):变量作用域与闭包
转自 http://www.cnblogs.com/BeginMan/p/3179040.html 一.全局变量与局部变量 一个模块中,最高级别的变量有全局作用域. 全局变量一个特征就是:除非被删除, ...
随机推荐
- PQSQL 按照时间进行分组
按照时间分组时一般是按照年.月.日进行分组,不会把时分秒也算进去,所以需要把时间戳提取出所需要的时间段,本质上是把时间戳格式化成对应形式的字符串,这个过程需要用to_char(timestamp, t ...
- 【PCIE-4】---PCIE中部分概念或问题总结(很基础很重要)
前面三小节,介绍了PCIE的基本知识和概念,以及扫描流程.在不求甚解的情况下,我想各位小伙伴应该对PCIE有了个宏观的认识,OK,那么本章我们在之前的基础上,再单独把一些概念和更深层次的问题摘出来具体 ...
- dp-最大连续子序列的和
https://www.felix021.com/blog/read.php?1587 什么是最大连续子序列和呢 ? 最大连续子序列和是所有子序列中元素和最大的一个 . 问题 : 给定一个序列 { - ...
- 自己动手搭环境—unit 1、Struts2环境搭建
1.web.xml中增加Struts2配置 <filter> <filter-name>struts2</filter-name> <filter-class ...
- render()到底渲染的什么?
1.格式 render(request,"xx.html",{"xx": xx}) 2.本质 通过模板语言动态渲染字符串(HTML文件) 注意: 1.HTML文 ...
- spring boot配置spring-data-jpa的时候报错CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is java.lang.NoSuchMethodError
org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager f ...
- 软件工程概论 网站开发要掌握的技术 &登录界面
1.网站系统开发需要掌握的技术 一.界面和用户体验(Interface and User Experience) 1.1 知道如何在基本不影响用户使用的情况下升级网站.通常来说,你必须有版本控制系统( ...
- 1、python3.x安装(windows)
现在大部分自动化测试已经使用python3.x版本,与Python2的区别这里就不多说了,如有兴趣可以自行百度. 一.下载 官网:https://www.python.org/downloads/,下 ...
- 2019杭电多校赛第九场 Rikka with Mista
Problem Description Rikka is a fervent fan of JoJo's Bizarre Adventure. As the last episode of Golde ...
- .net core之编辑json配置文件
.net core之编辑json配置文件 引言 最近在具体项目开发应用中,项目采用的json格式配置文件,配置文件的加载采用的IConfiguration接口对象进行的管理,这是.net standa ...