小编Liv*_*viu的帖子

在Python中设置应该是列表的参数的默认值的最佳实践?

我有一个Python列表作为参数.如果我将参数的默认值设置为空列表,如下所示:

def func(items=[]):
    print items
Run Code Online (Sandbox Code Playgroud)

Pylint会告诉我"危险的默认值[]作为参数".所以我想知道这里的最佳做法是什么?

python pylint default-value

62
推荐指数
2
解决办法
2万
查看次数

使用dll导出类时__declspec(dllimport)的未解析外部符号

我想基于dll导出的类定义派生类.基类在项目A中定义,派生类在项目B中定义.

首先,在项目A中,定义了预处理器MYDLL_BUILD.我使用头文件来指定导出/导入:

    #if !defined(MYDLL_BUILD)
    #   pragma comment(lib, "myDll.lib")
    #endif

    #if defined(MYDLL_BUILD)
    #   define MYDLL_API __declspec(dllexport)
    #else
    #   define MYDLL_API __declspec(dllimport)
    #endif
Run Code Online (Sandbox Code Playgroud)

然后我定义基类:

class MYDLL_API DllObject
{
public:
    virtual ~DllObject() {}
protected:
    DllObject() { m_count = 3; }
private:
    int m_count;
};
Run Code Online (Sandbox Code Playgroud)

在项目B中,未定义预处理器MYDLL_BUILD.这是派生类:

class MyClass : public DllObject
{
public:
    ~MyClass(){}
    MyClass() { m_data = 20; }
private:
    int m_data;
}; 
Run Code Online (Sandbox Code Playgroud)

我已经包含了dll和lib文件,但仍然得到了未解析的外部符号错误:

2>Test_Entry.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall ADAI::DllObject::~DllObject(void)" (__imp_??1DllObject@ADAI@@UAE@XZ) referenced in function "public: virtual __thiscall …
Run Code Online (Sandbox Code Playgroud)

c++ inline dllimport dllexport visual-c++

16
推荐指数
1
解决办法
4万
查看次数

隐藏一些可能没有成员的Pylint错误

以下Python片段代码通过以下方式分析Pylint:

if type(result) is array.array:
    read = result.tobytes()
Run Code Online (Sandbox Code Playgroud)

...最后一行出现以下错误:

E:401,22: Instance of 'int' has no 'tobytes' member\ 
 (but some types could not be inferred) (maybe-no-member)
Run Code Online (Sandbox Code Playgroud)

result变量是从外部函数接收.如何更改(更正)代码以使Pylint理解?或者我怎么能告诉它函数的结果可以有除int之外的其他类型?或者我怎么能告诉它忽略那条特定的线?(我赞成按此顺序回答问题)

python pylint python-3.4

15
推荐指数
1
解决办法
1万
查看次数

VC++中符号"vector deletion destructor"的含义是什么?

这个符号似乎是编译器生成的析构函数.这个''编译生成的析构函数'和'标量删除析构函数'有什么区别?是否还有其他类型的编译器生成ctor/dtor?

destructor visual-c++

9
推荐指数
1
解决办法
6056
查看次数

有关堆栈大小的警告消息

我用Visual Studio 2010Code Analysis激活.在我的代码中,有一行在函数中分配一些内存:

TCHAR someString[40000]; 
Run Code Online (Sandbox Code Playgroud)

代码分析会抛出一条警告消息:

警告C6262:函数使用'40000'字节的堆栈:超出/分析:stacksize'16384'.考虑将一些数据移动到堆中

我想知道是否应该严肃对待警告.如果我在堆栈上分配一些内存> 16384,我是否必须面对一些真正的麻烦?或者它只是一个一般的警告信息,它提醒我,我必须照顾我的堆栈大小?据我所知,默认堆栈大小为1MB(如果您使用Visual Studio).

c++ stack visual-studio-2010 visual-c++

8
推荐指数
1
解决办法
4540
查看次数

对于小案例,为什么插入排序比快速排序和冒泡排序更快?

我最近读了一篇文章,讨论了算法的计算复杂性.作者提到"为什么插入排序比小型案例的快速排序和冒泡排序更快".有人可以为此做出一些解释吗?

有人知道我上面提到的每种排序算法的实际复杂性吗?

algorithm quicksort bubble-sort time-complexity insertion-sort

6
推荐指数
1
解决办法
4522
查看次数

什么时候需要在SQL中为表名提供别名?

我注意到在使用多个JOIN进行查询时,我的查询不起作用,除非我给其中一个表名别名.

这是一个简单的例子来解释这一点:

不起作用:

SELECT subject
from items
join purchases on items.folder_id=purchases.item_id
join purchases on items.date=purchases.purchase_date
group by folder_id
Run Code Online (Sandbox Code Playgroud)

这样:

SELECT subject
from items
join purchases on items.folder_id=purchases.item_id
join purchases as p on items.date=p.purchase_date
group by folder_id
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下吗?

sql alias join table-alias

6
推荐指数
2
解决办法
5673
查看次数

如何在建立上下文时设置连接超时 - PrincipalContext

using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, Domain, UserName, Password))
            {
                UserPrincipal U = new UserPrincipal(ctx);
                U.GivenName = strFirstName;
                U.Surname = strLastName;
                U.EmailAddress = strEmail;

                PrincipalSearcher srch = new PrincipalSearcher(U);

                foreach (var principal in srch.FindAll())
                {
                    var p = (UserPrincipal)principal;
                    if (!User.Any(x => x.Email == p.EmailAddress))
                    {
                        MyUserDataset.UserRow User = User.NewUserRow();
                        User.FirstName = p.GivenName;
                        User.LastName = p.Surname;
                        User.UserName = p.SamAccountName;
                        User.Email = p.EmailAddress;
                        User.AddUserRow(User);
                    }
                }
                User.AcceptChanges();
            }
Run Code Online (Sandbox Code Playgroud)

我正在使用上面的PrincipalContext类来建立与目标目录的连接,并指定用于对目录执行操作的凭据.

有没有人知道如何在PrincipalContext构造函数中指定连接超时?我遇到连接超时问题我想知道我是否可以控制连接超时多长时间.

c# directoryservices adsi c#-4.0 principalcontext

6
推荐指数
1
解决办法
1270
查看次数

SourceTree多个github帐户

我有两个不同的github帐户和两个存储库。克隆存储库时,我使用了正确的用户名。

但是,当我要提交时,我无法在用户之间进行选择。默认情况下,它将选择全局git用户。

是否可以选择在SourceTree中的提交时使用哪个凭据。

github keychain atlassian-sourcetree credential-manager

5
推荐指数
2
解决办法
989
查看次数

替换函数“operator new”不能声明为“内联”[-Werror,-Winline-new-delete]

我在使用 clang 时遇到此错误。为什么operator new不能声明为内联?

./test.h:198:1: error: replacement function 'operator new' cannot be declared 'inline' [-Werror,-Winline-new-delete]
__forceinline void *operator new(size_t size) { return malloc(size); }
^
./test.h:18:23: note: expanded from macro '__forceinline'
#define __forceinline inline __attribute__((__always_inline__))

                  ^
Run Code Online (Sandbox Code Playgroud)

c++ inline clang new-operator

5
推荐指数
1
解决办法
2228
查看次数