python基础之 运行程序(reload import exec)

exec 在使用exec执行脚本的时候,要注意,变量覆盖的问题

比如:在执行文件script.py之前,有一个 x=0的变量赋值,但是在script文件中也使用到了变量x,那么在执行exec(open("script.py").read())之后,x的值将会被覆盖

原因:exec在运行文件,就像是把文件粘贴复制到代码的执行的位置,不需要重载修改后的文件,所以会有正在使用的变量被覆盖的风险

除了 exec 之外,import 和 from其实也可以去运行我们的代码(不用来执行这样的程序)

在实际中,我们不会使用from 和 import去执行我们的程序,import 和 from 导入包的时候使用。

我们使用 from dir1.dir2.file_name import mode  或者是 import dir1.dir2.file_name 这样的方式来导入我们需要的模块或者是某一个变量。

在使用的时候,要求dir1 dir2这两个目录中必须要有__init__.py的文件,否则导入会报错,无法正常使用,使用编译器比如pycharm创建一个新的package就会自动给创建一个__init__.py文件。

代码工程的主目录不需要__init__文件,即使有也会被忽略。

__init__文件中可以有程序代码,你可以使用它进行模块的初始化,当然它也可以是一个空文件,主要承担包初始化钩子,目录产生模块命名空间,使用目录导入时实现from *行为的角色。

当然不要把包中的__init__文件和 类中__init__构造函数方法混淆,前者时为了导入初次遍历一个包目录时所运行的代码的文件,后者在创建实例的时候使用。

原文地址:https://www.cnblogs.com/qiutian-guniang/p/10995422.html

时间: 2024-08-28 09:27:02

python基础之 运行程序(reload import exec)的相关文章

python环境中运行程序

运行Python程序,我们比较常用的是直接在Windows命令提示窗口或者Linux终端或shell窗口中,直接:Python *.py,或者在Linux环境下,在投不中,加入: #!/usr/bin/env python 然后 ./*.py 直接运行 但是进入Python后,该怎么运行呢? 这里就简单介绍一下,这里先简单介绍下os的部分功能. import os; #在Python环境中,引入环境,是必须的:具体可以查看Python中的os os.getcwd(); #得到当前工作目录 os.

python 基础 如何让程序接收参数,最简单用sys.argv[]来获取

python 基础 如何让程序接收参数,最简单用sys.argv[]来获取 1.用法 import sys  #导入sys模块 sys.argv[tag]  #根据参数的下标来取值 其中 tag为下标值,其中程序本身为0,sys.argv[0] 2.举例 (test_3.4.2) [[email protected] lab]# vim argv.py import sys print (sys.argv[0]) print (sys.argv[1]) print (sys.argv[2]) p

计算机基础系列一:网络基础和python基础(变量和程序交互)7月13和14日课堂预习/随笔/作业

上节课回顾   - 操作系统的两大作用   - 多道技术   一.网络基础   -1.互联网协议---就是计算机的网络通信标准   -2.网络指的是-计算机于计算机 之间通过物理连接介质(网络设备连接到一起二.osi七层协议   -五层为 应用 传输 网络 数据链 物理   2.1-以太网协议规定电信号为一组数据帧  基于Mac地址通讯仅限局域网通信       -每一组帧分为报头head和数据date两部分      -报头长度是固定的包含数据的类型和地址      -规定接入互联网必须要有一

python基础.CMD运行命令|?.py文件

1.CMD运行python命令 cmd中输入"python",回车,进入python控制台,然后输入一些python语句 2.cmd运行?.py文件 cmd中输入"python ???.py",回车. 3. 4. 5. 原文地址:https://www.cnblogs.com/pythonzc/p/12349620.html

python基础之try异常处理、socket套接字基础part1

异常处理 错误 程序里的错误一般分为两种: 1.语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误,人为造成的错误,如数据类型错误.调用方法错误等,这些解释器是不会进行检测的,只有在执行的过程中才能抛出的错误 异常 异常是python解释器在运行程序的过程中遇到错误所抛出的信息,如: Python异常种类: 常用异常: 1 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x 2 IOError 输入/输出异

《手把手教你》系列进阶篇之2-python+ selenium自动化测试 - python基础扫盲(详细教程)

1. 简介 这篇文章主要是分享讲解一下,如何封装自己用到的方法和类.以便方便自己和别人的调用,这样就可以避免重复地再造轮子. 封装(Encapsulation)是面向对象的三大特征之一(另外两个是继承和多态),它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问. 就好比使用计算机,我们只需要使用计算机提供的键盘,就可以达到操作计算机的目的,至于在敲击键盘时计算机内部是如何工作,我们根本不需要知道. 封装机制保证了类内部

Python基础05 缩进和选择

Python基础05 缩进和选择 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 缩进 Python最具特色的是用缩进来标明成块的代码.我下面以if选择结构来举例.if后面跟随条件,如果条件成立,则执行归属于if的一个代码块. 先看C语言的表达方式(注意,这是C,不是Python!) if ( i > 0 ) { x = 1; y = 2; } 如果i > 0的话,我们将进行括号中所包括的两个赋值操作.括号中包含的就是块操作

python基础05 缩进与选择

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 缩进 Python最具特色的是用缩进来标明成块的代码.我下面以if选择结构来举例.if后面跟随条件,如果条件成立,则执行归属于if的一个代码块. 先看C语言的表达方式(注意,这是C,不是Python!) if ( i > 0 ) { x = 1; y = 2; } 如果i > 0的话,我们将进行括号中所包括的两个赋值操作.括号中包含的就是块操作,它隶属于if. 在Python中

Python 基础教程

Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.像Perl语言一样, Python 源代码同样遵循 GPL(GNU General Public License)协议.现在开始学习 Python! 谁适合阅读本教程?本教程适合想从零开始学习Python编程语言的开发人员.当然本教程也会对一些模块进行深入,让你更好的了解Python的应用. 学习本教程前你需要了解在继续本教程之前