在您想要将嵌套模块导入命名空间的情况下,我总是这样写:
from concurrent import futures
Run Code Online (Sandbox Code Playgroud)
但是,我最近意识到这也可以使用"as"语法来表达.请参阅以下内容:
import concurrent.futures as futures
Run Code Online (Sandbox Code Playgroud)
这与其他进口看起来更相似的主观优势:
import sys
import os
import concurrent.futures as futures
Run Code Online (Sandbox Code Playgroud)
......具有增加冗长的缺点.
两者之间是否存在功能差异,或者是PEP中的官方首选还是其他?
我需要从另一个运行其中的东西的python文件中导入一个函数,但是当我导入函数时,它运行整个代码而不是只导入我想要的函数.反正只有从另一个.py文件导入一个函数而不运行整个代码?
我正在努力保持数据科学项目组织良好,所以我在我的src目录中创建了一个目录,其中包含utils一个名为的文件helpers.py,其中包含一些将在许多脚本中使用的辅助函数.我应该如何func_name从src/utils/helpers.py一个完全不同的目录中导入文件的最佳实践是什么,例如src/processing/clean_data.py?
我看到了这个问题的答案,我已经实现了一个有效的解决方案,但这感觉很难看:
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))))
Run Code Online (Sandbox Code Playgroud)
我这样做了吗?我是否需要将此添加到每个要导入的脚本中func_name,例如train_model.py?
我当前的项目文件夹结构:
myproject
/notebooks
notebook.ipynb
/src
/processing
clean_data.py
/utils
helpers.py
/models
train_model.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
示例文件:
# clean_data.py
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))))
from src.utils.helpers import func_name
func_name()
# helpers.py
def func_name():
print('I'm a helper function.')
Run Code Online (Sandbox Code Playgroud) 例如:
In [5]: import time
In [6]: def test():
...: t0=time.clock()
...: import pandas as pd
...: import numpy as np
...: import matplotlib.pyplot as plt
...: t1=time.clock()
...: print t1-t0
...:
In [7]: test()
10.8699593575
Run Code Online (Sandbox Code Playgroud)
在我的计算机上,这些语句消耗了超过 10 秒,因此在调试时,使用这些模块运行 python 脚本有点烦人。
有什么好的办法解决吗?
我一直在通过http://www.python-course.eu/tkinter_message_widget.php学习 tkinter
当我使用网站上提供的选项添加锚选项时,我不断收到错误消息。有人告诉我 NE 不存在,但在上面的链接中 NE 作为锚选项给出:
NameError: name 'NE' is not defined
Run Code Online (Sandbox Code Playgroud)
这是我的代码。
import tkinter
root = tkinter.Tk()
message = ("Whatever you do will be insignificant,"
"but it is very important that you do it.\n"
"(Mahatma Gandhi)")
msg = tkinter.Message(root,text = message, anchor = NE, aspect = 1000,
foreground='red', background='yellow',
highlightcolor='green', highlightthickness=0,
borderwidth=500)
#msg.config(bg='lightgreen', font=('times', 24, 'italic'))
msg.pack()
tkinter.mainloop()
Run Code Online (Sandbox Code Playgroud)
编辑:我也尝试在单引号中输入“NE”,但没有奏效。
鉴于这foo.bar是一个模块,有什么区别
import foo.bar as bar
Run Code Online (Sandbox Code Playgroud)
和
from foo import bar
Run Code Online (Sandbox Code Playgroud)
我对模块的延迟导入对此有何影响特别感兴趣。
注意:这不是这个问题的重复。
from \xe2\x80\xa6 import我正在阅读 python 3.6与python 3.6 之间的差异import ...。\n经过多次搜索,我找不到我的具体问题的任何答案。
看下面的例子:
\n\nfrom urllib import request\n\nimport urllib\nRun Code Online (Sandbox Code Playgroud)\n\n1)它们相等吗?我认为从英语的基本含义来看,第一个仅导入request,第二个导入其中的所有内容urllib,包括request和许多其他内容。我对吗?
2)我1是真的,假设我的python程序仅使用request从urllib使用第一个而不是第二个是否有任何性能优势?
可能重复:
'import module'或'from module
from … importimport'vsimport .
from glob import glob
from os.path import isfile
def countwords(fp):
with open(fp) as fh:
return len(fh.read().split())
print "There are" ,sum(map(countwords, filter(isfile, glob("*.txt") ) ) ), "words in the files."
Run Code Online (Sandbox Code Playgroud)
在第一行,为什么不只是简单地导入glob库?
有没有理由在"import glob"前面使用"from glob"?
我是 python 初学者(python 2.7 和 ironpython 2.7)而不是程序员。时不时,我会发现一个像这样开头的代码:
import clr
clr.AddReferenceToFile("nameOfmodule")
from nameOfmodule import someMethod
Run Code Online (Sandbox Code Playgroud)
这有什么意义?我们不能只使用:
from nameOfmodule import someMethod
Run Code Online (Sandbox Code Playgroud)
?
我试过谷歌搜索,但还没有真正理解解释。
感谢您的答复。
编辑:混淆不在“from nameOfmodule import someMethod”和“import nameOfmodule.someMethod”之间。我编辑了代码,现在它更有意义了。
假设我有一个名为 src.py 的脚本,其中定义了几个函数;这些函数都在一个名为 的类中LDA。numpy这些函数需要、等库scipy,这些库在脚本顶部作为标准导入。
现在,在一个名为 的新单独脚本中,main.py我导入该类LDA:
from src import LDA
Run Code Online (Sandbox Code Playgroud)
如果我现在在新脚本中使用该类LDA及其所有函数main.py,即使我没有导入src.py. 这是如何运作的?我是否应该需要 importnumpy等scipy才能main.py工作LDA?
我大部分时间都在尝试解决此问题。所以我想从github导入'deuces'包。但是,我不断收到错误消息:
!python
Run Code Online (Sandbox Code Playgroud)
Python 3.5.2 | Anaconda 4.2.0(64位)| (默认值,2016年7月5日,11:41:13)Win32上的[MSC v.1900 64位(AMD64)]键入“帮助”,“版权”,“信用”或“许可证”以获取更多信息。
>>> from deuces import Card
Run Code Online (Sandbox Code Playgroud)
追溯(最近一次通话最近):文件“ C” \ Program Files \ Anaconda3 \ lib \ site-packages \ deuces \ __ init__.py中的文件“”,行1,来自卡导入Card ImportError:否名为“卡”的模块
我一直在尝试使用anaconda并进行pip安装。我不知道自己在做什么错-我还尝试了卸载常规Python并重新安装了蟒蛇。
卡文件位于同一目录中,所以我不确定为什么找不到它。
在线教程之后,我输入了以下代码:
class Car:
# define and initialize some attributes of Car object
def __init__(self):
self.speed = 0
self.odometer = 0
self.time = 0
# 'get' function for current speed
def say_state(self):
print("I'm going {} kph!".format(self.speed))
# 'set' function for current speed
def accelerate(self):
self.speed += 5
# 'set' function for current speed
def brake(self):
self.speed -= 5
# 'set' function for trip time and distance
def step(self):
self.odometer += self.speed
self.time += 1
# 'get' function for average speed
def …Run Code Online (Sandbox Code Playgroud) python ×12
import ×3
python-3.x ×3
module ×2
clr ×1
dependencies ×1
function ×1
glob ×1
ipython ×1
matplotlib ×1
numpy ×1
pandas ×1
python-2.7 ×1
python.net ×1
tkinter ×1