我的应用程序中出现上述错误.这是原始代码
public string GetCustomerNumber(Guid id)
{
string accountNumber =
(string)DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidmyApp,
CommandType.StoredProcedure,
"GetCustomerNumber",
new SqlParameter("@id", id));
return accountNumber.ToString();
}
Run Code Online (Sandbox Code Playgroud)
我替换了
public string GetCustomerNumber(Guid id)
{
object accountNumber =
(object)DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidCRM,
CommandType.StoredProcedure,
"spx_GetCustomerNumber",
new SqlParameter("@id", id));
if (accountNumber is System.DBNull)
{
return string.Empty;
}
else
{
return accountNumber.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
这有更好的方法吗?
有没有办法迭代检索多个文件中的数据,并将它们绘制在gnuplot中的相同图形上.假设我有像data1.txt,data2.txt ...... data1000.txt这样的文件; 每个都有相同的列数.现在我可以写一些像 -
plot "data1.txt" using 1:2 title "Flow 1", \
"data2.txt" using 1:2 title "Flow 2", \
.
.
.
"data1000.txt" using 1:2 title "Flow 6"
Run Code Online (Sandbox Code Playgroud)
但这真的很不方便.我想知道是否有办法循环通过gnuplot中的情节部分.
使用Git,我的提交编辑是Vim.我一直在做一个很难记住包裹线的工作,所以我得到了很长的路线(例如,参见这个答案).有没有办法使用一些git config或.vimrc魔法,我可以让Vim自动包裹72列的行?
在python中,我可以定义一个函数如下:
def func(kw1=None,kw2=None,**kwargs):
...
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我可以调用func作为:
func(kw1=3,kw2=4,who_knows_if_this_will_be_used=7,more_kwargs=Ellipsis)
Run Code Online (Sandbox Code Playgroud)
我也可以定义一个函数:
def func(arg1,arg2,*args):
...
Run Code Online (Sandbox Code Playgroud)
可称为
func(3,4,additional,arguments,go,here,Ellipsis)
Run Code Online (Sandbox Code Playgroud)
最后,我可以将两种形式结合起来
def func(arg1,arg2,*args,**kwargs):
...
Run Code Online (Sandbox Code Playgroud)
但是,什么是行不通的是:
func(arg1,arg2,*args,kw1=None,kw2=None,**kwargs): #SYNTAX ERROR (in python 2 only, apparently this works in python 3)
...
Run Code Online (Sandbox Code Playgroud)
我最初的想法是,这可能是因为一个功能
def func(arg1,arg2,*args,kw1=None):
...
Run Code Online (Sandbox Code Playgroud)
可以称为
func(1,2,3) #kw1 will be assigned 3
Run Code Online (Sandbox Code Playgroud)
因此,这将引入一些含糊不清的关于3是否应该打包成args或kwargs.但是,使用python 3,可以指定仅关键字参数:
def func(a,b,*,kw=None): #can be called as func(1,2), func(1,2,kw=3), but NOT func(1,2,3)
...
Run Code Online (Sandbox Code Playgroud)
有了这个,似乎没有语法模糊:
def func(a,b,*args,*,kw1=None,**kwargs):
...
Run Code Online (Sandbox Code Playgroud)
但是,这仍然会导致语法错误(使用Python3.2测试).这是否有理由让我失踪?并且,有没有办法获得我上面描述的行为(使用默认参数*args) - 我知道我可以通过操作函数内部的kwargs字典来模拟该行为.
我在使用sys.getsizeof相同的列表时看到了一些不一致的地方.(Python 2.7.5)
>>> lst = [0,1,2,3,4,5,6,7,8,9]
>>> sys.getsizeof(lst)
76
>>> lst2 = list(lst)
>>> sys.getsizeof(lst2)
104
>>> lst3 = list(lst2)
>>> sys.getsizeof(lst3)
104
>>> sys.getsizeof(lst[:])
76
>>> sys.getsizeof(lst2[:])
76
Run Code Online (Sandbox Code Playgroud)
有人有简单的解释吗?
在NumPy中,我可以通过以下方式获取特定数据类型的大小(以字节为单位):
datatype(...).itemsize
Run Code Online (Sandbox Code Playgroud)
要么:
datatype(...).nbytes
Run Code Online (Sandbox Code Playgroud)
例如:
np.float32(5).itemsize #4
np.float32(5).nbytes #4
Run Code Online (Sandbox Code Playgroud)
我有两个问题.首先,有没有办法在不创建数据类型实例的情况下获取此信息?第二,itemsize和之间的区别是nbytes什么?
我的印象是,在NumPy中,两个阵列可以共享相同的内存.请看以下示例:
import numpy as np
a=np.arange(27)
b=a.reshape((3,3,3))
a[0]=5000
print (b[0,0,0]) #5000
#Some tests:
a.data is b.data #False
a.data == b.data #True
c=np.arange(27)
c[0]=5000
a.data == c.data #True ( Same data, not same memory storage ), False positive
Run Code Online (Sandbox Code Playgroud)
所以显然b没有复制a; 它只是创建了一些新的元数据并将其附加到a正在使用的相同内存缓冲区中.有没有办法检查两个数组是否引用相同的内存缓冲区?
我的第一印象是使用a.data is b.data,但返回false.我能做的a.data == b.data,返回真,但我不认为检查,以确保a和b共享相同的内存缓冲区,只有内存块被引用a和引用的一个b具有相同的字节.
在回答另一个问题时,我建议用来timeit测试索引带有正整数和负整数的列表之间的区别.这是代码:
import timeit
t=timeit.timeit('mylist[99]',setup='mylist=list(range(100))',number=10000000)
print (t)
t=timeit.timeit('mylist[-1]',setup='mylist=list(range(100))',number=10000000)
print (t)
Run Code Online (Sandbox Code Playgroud)
我用python 2.6运行了这段代码:
$ python2.6 test.py
0.587687015533
0.586369991302
Run Code Online (Sandbox Code Playgroud)
然后我用python 3.2运行它:
$ python3.2 test.py
0.9212150573730469
1.0225799083709717
Run Code Online (Sandbox Code Playgroud)
然后我挠了挠头,做了一些谷歌搜索,并决定在这里发布这些观察结果.
操作系统:OS-X(10.5.8) - Intel Core2Duo
这对我来说似乎是一个非常显着的差异(差异超过1.5).有没有人知道为什么python3这么慢 - 特别是对于这样一个常见的操作?
编辑
我在我的Ubuntu Linux桌面(Intel i7)上运行相同的代码,并使用python2.6和python 3.2获得了可比较的结果.这似乎是一个依赖于操作系统(或处理器)的问题(其他用户在Linux机器上看到相同的行为 - 请参阅注释).
编辑2
在其中一个答案中请求了启动横幅,所以这里是:
Python 2.6.4 (r264:75821M, Oct 27 2009, 19:48:32)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Run Code Online (Sandbox Code Playgroud)
和:
Python 3.2 (r32:88452, Feb 20 2011, 10:19:59)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Run Code Online (Sandbox Code Playgroud)
UPDATE
我刚从http://www.python.org/download/安装了新版本的python2.7.3和python3.2.3
在这两种情况下,我都拿了 …
我正在生成二进制数据文件,这些文件只是连接在一起的一系列记录.每条记录包含一个(二进制)标题,后跟二进制数据.在二进制头内是一个长度为80个字符的ascii字符串.在某个地方,我编写文件的过程有点搞砸了,我试图通过检查每条记录的实际长度来调试这个问题.
这似乎非常相关,但我不理解perl,所以我无法在那里得到公认的答案.bgrep我编译的其他答案指向,但它希望我提供一个十六进制字符串,我宁愿只有一个工具,我可以给它ascii字符串,它会在二进制数据中找到它,打印字符串和找到它的字节偏移量.
换句话说,我正在寻找一些像这样的工具:
tool foobar filename
Run Code Online (Sandbox Code Playgroud)
要么
tool foobar < filename
Run Code Online (Sandbox Code Playgroud)
它的输出是这样的:
foobar:10
foobar:410
foobar:810
foobar:1210
...
Run Code Online (Sandbox Code Playgroud)
例如匹配的字符串和匹配开始的文件中的字节偏移量.在这个示例中,我可以推断每条记录的长度为400字节.
其他限制:
我对Python原始字符串有点困惑.我知道如果我们使用原始字符串,那么它会将'\'视为正常的反斜杠(例如r'\n'将是'\'和'n').但是,我想知道如果我想匹配原始字符串中的新行字符.我试过r'\n',但它不起作用.有人对此有一些好主意吗?