对python同一个文件夹里面不同.py文件的交叉引用方法详解
比如有两个模块,一个aa.py,一个bb.py 代码如下:
aa.py:
#encoding:utf-8 import bb a=1
bb.py:
#encoding:utf-8 import aa print aa.a
执行bb.py时,不能执行,打印错误 AttributeError: 'module' object has no attribute 'a'
原因:
如果执行bb的话,这时候bb是__main__,不是module,所以会执行到bb的from aa,这个时候python会执行aa.py,而aa.py一开始就是from bb,所以python又会去执行bb.py,因为bb.py的一开始就是from aa,并且因为之前执行过,所以这个时候aa已经在sys.module里面,所以python不会重新执行aa.py,而只是把sys.modules里面的aa返回给你,所以当执行到bb.py的print b 的时候,还没有执行aa.py里面的a=1,所以会有找不到a的attribute error
解决方案:
aa.py:
#encoding:utf-8 import bb a=1
bb.py:
#encoding:utf-8 import aa if __name__=="__main__": print aa.a
以上这篇对python同一个文件夹里面不同.py文件的交叉引用方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
解析Python中的变量、引用、拷贝和作用域的问题
在Python中,变量是没有类型的,这和以往看到的大部分编辑语言都不一样.在使用变量的时候,不需要提前声明,只需要给这个变量赋值即可.但是,当用变量的时候,必须要给这个变量赋值:如果只写一个变量,而没有赋值,那么Python认为这个变量没有定义.如下: >>> a Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a'
-
Python中实现变量赋值传递时的引用和拷贝方法
iamlaosong文 曾经看到这样一个问题,一个字典中的元素是列表,将这个列表元素赋值给一个变量,然后修改这个列表中元素的值,结果发现,字典中那个列表也同样修改了. 那个问题如下: dict = {'a':[1,2,3,4,5],'b':2} x = dict['a'] for i in range(5): x[i] = 0 print(dict['a']) 程序运行结果如下: [0, 0, 0, 0, 0] 这儿涉及到Python赋值到底是引用还是拷贝一份的问题,即赋值时是传值还是传址.上面
-
Python中的引用和拷贝浅析
If an object's value can be modified, the object is said to be mutable. If the value cannot be modified,the object is said to be immutable. mutable 可变类型,例如 list,set,自定义类型(等价于C#中的引用类型): immutable 不可变类型,例如string,numbers等(等价于C#中的值类型): 一.引用和拷贝(references
-
对python创建及引用动态变量名的示例讲解
实际上在python中用列表就可以实现动态变量名的管理,python中的列表中可以存储任何类型的元素: listA = [0,"str",B()] 上述列表分别存储了整数,字符串,对象.使用和创建时只需配合列表下标即可. 但python确实有创建动态表量名的方法: names = locals() for i in range(1,10): names['a%i'%i] = input('Abss %d'%i) for i in range(1,10): print(names['a%
-
Python中的引用和拷贝实例解析
这篇文章主要介绍了python中的引用和拷贝实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.引用 a = ['a', 'b', 'c'] b = a print(id(a)) print(id(b)) 135300560 135300560 可以看到,变量a 和 b 的 id是完全一样的,这就说明a和b是同时指向内存的同一个区域的,即b随a的变化而变化. a = ['a', 'b', 'c'] b = a a[1] = 'd' pr
-
python中的对象拷贝示例 python引用传递
何谓引用传递,我们来看一个C++交换两个数的函数: 复制代码 代码如下: void swap(int &a, int &b){ int temp; temp = a; a = b; b = temp;} 这个例子就是一个引用传递的例子!目的是说明一下概念:引用传递的意思就是说你传递的是对象的引用,对这个引用的修改也会导致原有对象的改变.学过C/C++的朋友们都知道,在交换2个数的时候,如果自己实现一个swap函数,需要传递其引用或者指针. Python直接使用引用传
-
Python切片索引用法示例
本文实例讲述了Python切片索引用法.分享给大家供大家参考,具体如下: 在Python中,可以用用简单的方括号加一个下标的方式访问序列的每一个元素,这种方式称之为切片操作符,切片操作符有三种形式: [],[:],[::] 访问某一数据元素的语法如下: sequence[index] sequence是序列的名字,index是访问元素的对应的偏移量,为正数,0<=index<=len(sequence)-1:使用负索引的时候,其范围为-len(sequence) <=index <
-
浅谈Python浅拷贝、深拷贝及引用机制
这礼拜碰到一些问题,然后意识到基础知识一段时间没巩固的话,还是有遗忘的部分,还是需要温习,这里做份笔记,记录一下 前续 先简单描述下碰到的题目,要求是写出2个print的结果 可以看到,a指向了一个列表list对象,在Python中,这样的赋值语句,其实内部含义是指a指向这个list所在内存地址,可以看作类似指针的概念. 而b,注意,他是把a对象包裹进一个list,并且乘以5,所以b的样子应该是一个大list,里面元素都是a 而当a对象进行了append操作后,其实,隐含的意思是,内存中的这个l
-
对python同一个文件夹里面不同.py文件的交叉引用方法详解
比如有两个模块,一个aa.py,一个bb.py 代码如下: aa.py: #encoding:utf-8 import bb a=1 bb.py: #encoding:utf-8 import aa print aa.a 执行bb.py时,不能执行,打印错误 AttributeError: 'module' object has no attribute 'a' 原因: 如果执行bb的话,这时候bb是__main__,不是module,所以会执行到bb的from aa,这个时候python会执行
-
python引入其他文件夹下的py文件具体方法
红色方框要引入箭头里面的 import sys sys.path.append('../../config/') from database import * print(MYSQL_CONFIG) 内容扩展: Python的import包含文件功能就跟PHP的include类似,但更确切的说应该更像是PHP中的require,因为Python里的import只要目标不存在就报错程序无法往下执行.要包含目录里的文件,PHP中只需要给对路径就OK.Python中则不同 a.py 要 import
-
python编程之requests在网络请求中添加cookies参数方法详解
哎,好久没有学习爬虫了,现在想要重新拾起来.发现之前学习爬虫有些粗糙,竟然连requests中添加cookies都没有掌握,惭愧.废话不宜多,直接上内容. 我们平时使用requests获取网络内容很简单,几行代码搞定了,例如: import requests res=requests.get("https://cloud.flyme.cn/browser/index.jsp") print res.content 你没有看错,真的只有三行代码.但是简单归简单,问题还是不少的. 首先,这
-
对web.py设置favicon.ico的方法详解
本文介绍在web.py中设置favicon.ico的方法: 如果没设置favicon,后台日志是这样的: 127.0.0.1:4133 - - [03/Sep/2015 18:49:53] "HTTP/1.1 GET /favicon.ico" - 303 See Other 由于浏览器会自动去获取这个文件,在web.py中可以这样设置: 设置步骤: 0.把favicon.ico图标拷贝到staic目录下,我这里是放在/static/res/目录下 1.在urls中添加映射规则: ur
-
对python借助百度云API对评论进行观点抽取的方法详解
通过百度云API接口抽取得到产品评论的观点,也掠去了很多评论中无用的内容以及符号,为后续进行文本主题挖掘或者规则的提取提供基础. 工具 1.百度云账号,申请应用接口(自然语言处理) 2.python3.5 以下是百度接口提供的说明: 我们使用到的可选值是13,kindle属于3C产品. 下面是代码示例: from aip import AipNlp import csv import pandas as pd from pandas.core.frame import DataFrame "&q
-
python字典多键值及重复键值的使用方法(详解)
在Python中使用字典,格式如下: dict={ key1:value1 , key2;value2 ...} 在实际访问字典值时的使用格式如下: dict[key] 多键值 字典的多键值形式如下: dict={(ke11,key12):value ,(key21,key22):value ...} 在实际访问字典里的值时的具体形式如下所示(以第一个键为例): dict[key11,key12] 或者是: dict[(key11,key12)] 以下是实际例子: 多值 在一个键值对应多个值时,
-
关于Python核心框架tornado的异步协程的2种方法详解
什么是异步? 含义 :双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,同时在结束时有停止位 现象:没有共同的时钟,不考虑顺序来了就处理 直观感受:就是不用等了,效率高 同步 含义:指两个或两个以上随时间变化的量在变化过程中保持一定的相对关系 现象:有一个共同的时钟,按来的顺序一个一个处理 直观感受 :就是需要等候,效率低下 那么今天我们看怎么用2种方法用代码实现tornado的异步? 这些是导入的包: 2种方法用代码实现to
-
对Python中的条件判断、循环以及循环的终止方法详解
条件判断 条件语句是用来判断给定条件是否满足,并根据判断所得结果从而决定所要执行的操作,通常的逻辑思路如下图: 单次判断 形式 if <判断条件>: <执行> else: <执行> 例子 age = int(input("输入你的年龄:")) if age < 18: print("未成年") else: print("已成年") 多次判断 形式 if <判断条件1>: <执行1>
-
Python引用(import)文件夹下的py文件的方法
Python的import包含文件功能就跟PHP的include类似,但更确切的说应该更像是PHP中的require,因为Python里的import只要目标不存在就报错程序无法往下执行.要包含目录里的文件,PHP中只需要给对路径就OK.Python中则不同,下面来看看这个例子. 目录结构: a.py 要 import dir目录下的 b.py 文件.a.py代码如下: 复制代码 代码如下: # coding=utf-8 "import dir 目录下的 b.py 文件" impo
-
Python大数据之从网页上爬取数据的方法详解
本文实例讲述了Python大数据之从网页上爬取数据的方法.分享给大家供大家参考,具体如下: myspider.py : #!/usr/bin/python # -*- coding:utf-8 -*- from scrapy.spiders import Spider from lxml import etree from jredu.items import JreduItem class JreduSpider(Spider): name = 'tt' #爬虫的名字,必须的,唯一的 all
随机推荐
- Python3 模块、包调用&路径详解
- Oracle 如何规范清理v$archived_log记录实例详解
- jquery插件jquery.confirm弹出确认消息
- asp.net 类库中使用ConfigurationManager.ConnectionStrings
- python实现多线程的两种方式
- VC++中内存对齐实例教程
- DBA应该知道的一些关于SQL Server跟踪标记的使用
- MYSQL数据库中cmd命令操作详解
- JavaScript实现按照指定长度为数字前面补零输出的方法
- thinkPHP5.0框架简单配置作用域的方法
- js贪吃蛇网页版游戏特效代码分享(挑战十关)
- 用ajax实现在单击事件下加载一个DIV层的脚本
- 浅析Python编写函数装饰器
- 一步步教你建立SQL数据库的表分区
- 大家须知简单的php性能优化注意点
- jquery toggle faq 春江花月夜版
- jQuery根据ID获取input、checkbox、radio、select的示例
- 使用JS CSS去除IE链接虚线框的三种方法
- linux中了minerd之后的完全清理过程(详解)
- Android使用ViewDragHelper实现QQ6.X最新版本侧滑界面效果实例代码