标签: coding-style

如何从函数返回多个值?

在支持它的语言中返回多个值的规范方法通常是tupling.

选项:使用元组

考虑这个简单的例子:

def f(x):
  y0 = x + 1
  y1 = x * 3
  y2 = y0 ** y3
  return (y0, y1, y2)
Run Code Online (Sandbox Code Playgroud)

但是,随着返回值的增加,这很快就会出现问题.如果您想要返回四个或五个值,该怎么办?当然,你可以保持它们的组合,但很容易忘记哪个值在哪里.在任何想要接收它们的地方解压缩它们也相当丑陋.

选项:使用字典

下一个合乎逻辑的步骤似乎是引入某种"记录符号".在python中,显而易见的方法是通过a dict.

考虑以下:

def g(x):
  y0 = x + 1
  y1 = x * 3
  y2 = y0 ** y3
  return {'y0': y0, 'y1': y1 ,'y2': y2}
Run Code Online (Sandbox Code Playgroud)

(编辑 - 要清楚,y0,y1和y2只是作为抽象标识符.正如所指出的,在实践中你会使用有意义的标识符)

现在,我们有一个机制,我们可以在其中投射返回对象的特定成员.例如,

result['y0']
Run Code Online (Sandbox Code Playgroud)

选项:使用课程

但是,还有另一种选择.我们可以返回一个专门的结构.我已经在Python的上下文中对此进行了构建,但我确信它也适用于其他语言.事实上,如果你在C工作,这可能是你唯一的选择.开始:

class ReturnValue:
  def __init__(self, y0, y1, y2):
     self.y0 = y0
     self.y1 = y1
     self.y2 = y2

def …
Run Code Online (Sandbox Code Playgroud)

python coding-style return return-value

1011
推荐指数
12
解决办法
111万
查看次数

什么是标准的Python文档字符串格式?

我在Python中看到过几种不同的写作文档字符样式,是官方还是"同意"的风格?

python documentation coding-style docstring

826
推荐指数
7
解决办法
37万
查看次数

一个函数应该只有一个return语句吗?

是否有充分的理由说明为什么在函数中只有一个return语句是更好的做法?

或者,一旦逻辑正确就可以从函数返回,这意味着函数中可能有很多返回语句?

language-agnostic coding-style

781
推荐指数
28
解决办法
23万
查看次数

单引号与Python中的双引号

根据文档,它们几乎可以互换.是否有风格上的理由使用一个而不是另一个?

python coding-style

718
推荐指数
8
解决办法
49万
查看次数

Python`如果x不是None`或`if not x is None`?

我一直认为if not x is None版本更清晰,但谷歌的风格指南PEP-8都使用if x is not None.是否存在任何轻微的性能差异(我假设没有),是否存在任何一个真正不合适的情况(使另一个成为我公约的明显赢家)?*

*我指的是任何单身人士,而不仅仅是None.

...比较像无的单身人士.使用是否.

python coding-style boolean-expression

687
推荐指数
7
解决办法
69万
查看次数

在'if'语句中设置多行条件的样式?

有时我会将ifs中的长条件分成几行.最明显的方法是:

  if (cond1 == 'val1' and cond2 == 'val2' and
      cond3 == 'val3' and cond4 == 'val4'):
      do_something
Run Code Online (Sandbox Code Playgroud)

视觉上不是很吸引人,因为动作与条件相融合.但是,这是使用4个空格的正确Python缩进的自然方式.

目前我正在使用:

  if (    cond1 == 'val1' and cond2 == 'val2' and
          cond3 == 'val3' and cond4 == 'val4'):
      do_something
Run Code Online (Sandbox Code Playgroud)

但这不是很漂亮.:-)

你能推荐另一种方式吗?

python if-statement coding-style

618
推荐指数
12
解决办法
107万
查看次数

类中的项目顺序:字段,属性,构造函数,方法

在课程结构方面,是否有关于项目顺序的官方C#指南?

它会去:

  • 公共领域
  • 私人领域
  • 属性
  • 构造函数
  • 方法

我很好奇是否有关于物品顺序的硬性规定?我到处都是.我想坚持一个特定的标准,所以我可以到处做.

真正的问题是我的更复杂的属性最终看起来很像方法,他们觉得在构造函数之前顶部不合适.

有什么提示/建议吗?

.net c# coding-style code-cleanup code-structure

596
推荐指数
9
解决办法
20万
查看次数

将整个Javascript文件包装在"(function(){...})()"之类的匿名函数中的目的是什么?

我最近一直在阅读很多Javascript,并且我注意到要导入的.js文件中的整个文件包含如下所示.

(function() {
    ... 
    code
    ...
})();
Run Code Online (Sandbox Code Playgroud)

这样做的原因是什么,而不是一组简单的构造函数?

javascript scope coding-style iife

572
推荐指数
6
解决办法
10万
查看次数

为什么要使用def main()?

可能重复:
if __name__== "__main__"什么?

我见过一些使用的代码示例和教程

def main():
    # my code here

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

但为什么?是否有任何理由不在文件顶部定义您的函数,然后只在其下编写代码?即

def my_function()
    # my code here

def my_function_two()
    # my code here

# some code
# call function
# print(something)
Run Code Online (Sandbox Code Playgroud)

我只是想知道主要有没有押韵?

python coding-style

545
推荐指数
5
解决办法
69万
查看次数

C++:"std :: endl"vs"\n"

许多C++书籍都包含这样的示例代码......

std::cout << "Test line" << std::endl;
Run Code Online (Sandbox Code Playgroud)

......所以我也一直这样做.但我已经看到很多来自像这样的开发人员的代码:

std::cout << "Test line\n";
Run Code Online (Sandbox Code Playgroud)

是否有技术上的理由偏爱另一个,或者仅仅是编码风格的问题?

c++ iostream coding-style c++-faq

530
推荐指数
10
解决办法
18万
查看次数