让我说我有一个打字稿文件Utils与一堆导出函数:
export function utilOne(){}
export function utilTwo(){}
Run Code Online (Sandbox Code Playgroud)
我将index.d.ts文件添加到此文件夹中,我从Utils文件中导出*:
export * from './Utils';
Run Code Online (Sandbox Code Playgroud)
在我的其他类中,我想通过utils命名空间访问函数utilOne和utilTwo,如:
utils.utilOne();
Run Code Online (Sandbox Code Playgroud)
我知道我可以像这样导入它:
import * as utils from "./Utils";
Run Code Online (Sandbox Code Playgroud)
但是,由于我将使用utils很多,我希望能够在命名空间中导出utils,例如:
export {* as utils} from './Utils'; // this doesn't work
Run Code Online (Sandbox Code Playgroud)
然后使用:
import * from "./Utils";
Run Code Online (Sandbox Code Playgroud)
但是导出{*as utils}不起作用.我可以把Utils的所有功能都放到模块"utils"中并导出它,但我不确定这是不是一个好习惯.有没有正确的方法来做到这一点?
我是python的新手,我有一个简单的问题.
例如
如果我做
import A
Run Code Online (Sandbox Code Playgroud)
然后我可以用A.b().我想知道,如何忽略A的A.b()?
我在Windows上使用Python 2.7,我正在编写一个使用时间和日期时间模块的脚本.我以前做过这个,但是python似乎对于加载两个模块以及我之前使用过的方法似乎并不敏感.这是我使用的不同语法和我目前得到的错误.
首先我试过:
from datetime import *
from time import *
...
checktime = datetime.today() - timedelta(days=int(2))
checktime = checktime.timetuple()
...
filetimesecs = os.path.getmtime(webgatelogdir + '/' + fn)
file = webgatelogdir + '/' + fn
filetime = localtime(filetimesecs)
...
else: time.sleep(60)
Run Code Online (Sandbox Code Playgroud)
错误:
else: time.sleep(60) AttributeError: 'builtin_function_or_method' object has no attribute 'sleep'
然后我尝试了:
from datetime import *
from time import *
...
checktime = datetime.today() - timedelta(days=int(2))
checktime = checktime.timetuple()
...
filetimesecs = os.path.getmtime(webgatelogdir + '/' + fn)
file = webgatelogdir …Run Code Online (Sandbox Code Playgroud) 一个常见的习语(可以在书籍,教程和许多Stack Overflow问题中找到)df用作数据帧的一种丢弃标识符.我已经完成了数百次看似没有任何不良影响,但后来遇到了以下代码:
library(tree)
df <- droplevels(iris[1:100,c(1,2,5)])
tr <- tree(Species ~ ., data = df)
plot(tr)
text(tr)
partition.tree(tr)
Run Code Online (Sandbox Code Playgroud)
这给出以下错误消息:
Error in as.data.frame.default(data, optional = TRUE) :
cannot coerce class ""function"" to a data.frame
Run Code Online (Sandbox Code Playgroud)
我通过反复试验发现,如果我简单地替换df上面df2的代码,代码就会按预期工作.确实,这是df F分布的密度函数的名称,但这似乎与此无关.这是一个错误的tree包,还是一个重要的警示故事,其道德是我应该避免使用df作为数据帧的名称,因为这样做引入了名称冲突?
我对 spark 比较陌生,当我在导入 pyspark 函数后尝试使用 python 的内置 round() 函数时遇到了一个问题。这似乎与我如何导入 pyspark 函数有关,但我不确定有什么区别或为什么一种方式会导致问题而另一种方式不会。
预期行为:
import pyspark.sql.functions
print(round(3.14159265359,2))
>>> 3.14
Run Code Online (Sandbox Code Playgroud)
意外行为:
from pyspark.sql.functions import *
print(round(3.14159265359,2))
>>> ERROR
AttributeError Traceback (most recent call last)
<ipython-input-1-50155ca4fa82> in <module>()
1 from pyspark.sql.functions import *
----> 2 print(round(3.1454848383,2))
/opt/spark/python/pyspark/sql/functions.py in round(col, scale)
503 """
504 sc = SparkContext._active_spark_context
--> 505 return Column(sc._jvm.functions.round(_to_java_column(col), scale))
506
507
AttributeError: 'NoneType' object has no attribute '_jvm'
Run Code Online (Sandbox Code Playgroud) 在 C# 中,全局使用的概念可用于 DRY(不要重复)using许多文件中的许多常见语句。
现在,我们在许多 Python 文件中都有许多类似的导入。我们是否可以使用类似的策略来减少样板代码?
请考虑以下代码.
using System.ComponentModel.DataAnnotations;
namespace Foo
{
public class Bar
{
[Required, MaxLength(250)]
public virtual string Name { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
除非你有一个花哨的IDE(在幕后进行各种查找和静态分析),否则"必需"和"MaxLength"实际来自哪里都很模糊.特别是当可能导入多个名称空间时,具有相似的含义.
作为C#的相对新手,我发现自己总是很难弄清楚某些事情的来源.特别是在查看StackOverflow等地方的其他代码片段时.
using DataAnnotations = System.ComponentModel.DataAnnotations;
namespace Foo
{
public class Bar
{
[DataAnnotations.Required, DataAnnotations.MaxLength(250)]
public virtual string Name { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
现在很明显"必需"和"MaxLength"的来源.您可以采取另一个步骤,并执行以下操作:
using Required = System.ComponentModel.DataAnnotations.RequiredAttribute;
using MaxLength = System.ComponentModel.DataAnnotations.MaxLengthAttribute;
namespace Foo
{
public class Bar
{
[Required, MaxLength(250)]
public virtual string Name { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
这与PHP和Js ES6的工作方式非常相似.
我很好奇为什么这不是C#的默认值?为什么我和其他所有C#开发人员一起考虑别名的不良做法?是否存在一些潜在的性能原因?
假设我有一个文件夹结构像这样的项目。
/project
__init__.py
main.py
/__helpers
__init__.py
helpers.py
...
Run Code Online (Sandbox Code Playgroud)
该模块helpers.py定义了一些异常并包含一些引发该异常的方法。
# /project/__helpers/helpers.py
class HelperException(Exception):
pass
def some_function_that_raises():
raise HelperException
Run Code Online (Sandbox Code Playgroud)
另一方面,我的main.py模块定义了自己的异常并导入了可能从helpers.py.
# /projects/main.py
from project.__helpers.helpers import some_function_that_raises
class MainException(Exception):
pass
Run Code Online (Sandbox Code Playgroud)
现在,from project.__helpers.helpers import HelperException如果用户想要捕获该异常,我不希望用户必须这样做。能够从引发异常的公共模块导入异常会更有意义。
但我不能只是移动HelperException到main.py,这会创建一个循环导入。
允许用户导入所有异常的最佳方法main.py是/__helpers什么?
我在编程方面很新,只是学习python.
我正在使用Komodo Edit 9.0来编写代码.所以,当我写"从数学导入sqrt"时,我可以毫无问题地使用"sqrt"函数.但是,如果我只写"导入数学",那么该模块的"sqrt"功能不起作用.这背后的原因是什么?我能以某种方式修复它吗?
我遇到了来自轮廓f()的非常奇怪的错误。我想为 3D 投影设置特定的最小值和最大值,但是当我尝试设置大于 -+max(Z) 的值时,我收到错误消息:
文件“C:\ Program Files \ Python38 \ lib \ site-packages \ mpl_toolkits \ mplot3d \ art3d.py”,第768行,在do_3d_projection zzs,segments_2d,self._facecolors2d,self._edgecolors2d,idxs =
ValueError:没有足够的值解压(预期为 5,实际为 0)
lmin,lmax = -1, 1 仅适用或更低的值
这是示例:
from pylab import *
mpName = 'seismic'
X = np.linspace(-np.pi, np.pi, 192)
Y = np.linspace(-np.pi, np.pi, 192)
X, Y = np.meshgrid(X, Y)
Z = np.sin(X*Y)
lmin,lmax = -2, 2 #
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.contourf(Y, X, Z, cmap='RdBu', zdir='z', offset=np.pi, levels=np.linspace(lmin,lmax,20))
ax.set_xlim3d(-np.pi, np.pi)
ax.set_ylim3d(-np.pi, np.pi)
ax.set_zlim3d(-np.pi, np.pi) …Run Code Online (Sandbox Code Playgroud)