标签: parentheses

Python Conditionals中的括号

关于在Python条件语句中使用括号,我有一个简单的问题.

以下两个片段的工作方式相同,但我想知道这是否真实,因为它的简单性;

>>> import os, socket
>>> if ((socket.gethostname() == "bristle") or (socket.gethostname() == "rete")):
...     DEBUG = False
... else:
...     DEBUG = True
... 
>>> DEBUG
Run Code Online (Sandbox Code Playgroud)

现在没有括号

>>> import os, socket
>>> if socket.gethostname() == "bristle" or socket.gethostname() == "rete":
...     DEBUG = False
... else:
...     DEBUG = True
... 
>>> DEBUG
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮忙解释一下吗?他们在任何情况下我都应该使用它们吗?

python conditional parentheses

29
推荐指数
4
解决办法
6万
查看次数

括号/括号匹配使用堆栈算法

例如,如果括号/括号在以下内容中匹配:

({})
(()){}()
()
Run Code Online (Sandbox Code Playgroud)

依此类推,但如果括号/括号不匹配,则应返回false,例如:

{}
({}(
){})
(()
Run Code Online (Sandbox Code Playgroud)

等等.你能查一下这段代码吗?提前致谢.

public static boolean isParenthesisMatch(String str) {
    Stack<Character> stack = new Stack<Character>();

    char c;
    for(int i=0; i < str.length(); i++) {
        c = str.charAt(i);

        if(c == '{')
            return false;

        if(c == '(')
            stack.push(c);

        if(c == '{') {
            stack.push(c);
            if(c == '}')
                if(stack.empty())
                    return false;
                else if(stack.peek() == '{')
                    stack.pop();
        }
        else if(c == ')')
            if(stack.empty())
                return false;
            else if(stack.peek() == '(')
                    stack.pop();
                else
                    return false;
        }
        return stack.empty();
}

public static …
Run Code Online (Sandbox Code Playgroud)

java stack parentheses

29
推荐指数
5
解决办法
14万
查看次数

如何在Intellij IDEA中关闭自动括号生成?

键入函数名称(或自动完成)时,IDEA会自动将括号放在其后面并将光标放在它们之间:foo(|)

我非常不喜欢这个,我更喜欢让我自​​己输入括号.有没有办法做到这一点?

更新:

回复:"插入对支架"设置:

所以,这个选项已经为我关闭了.我刚测试并发现这只发生在Actionscript文件中.在Java中它只给了我(字符,它让我的类型覆盖它.在Actionscript中,无论我做什么,它都会自动放入两个parens.可能需要深入了解插件.

autocomplete intellij-idea parentheses

28
推荐指数
1
解决办法
9820
查看次数

C中宏的括号需要

我试着SQR在下面的代码中使用宏的定义:

#define SQR(x) (x*x)
int main()
{
    int a, b=3;
    a = SQR(b+5);      // Ideally should be replaced with (3+5*5+3), though not sure.
    printf("%d\n",a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它打印23.如果我将宏定义更改为SQR(x) ((x)*(x))然后输出是预期的,64.我知道在C中调用宏会用宏的定义替换调用,但是我仍然无法理解它是如何计算的23.

c macros parentheses c-preprocessor

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

bash函数:将主体括在括号和括号中

通常,使用花括号来定义bash函数来包围正文:

foo()
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

今天在处理shell脚本时大量使用函数时,我遇到的问题是调用函数中调用的名称相同的变量,即那些变量是相同的.然后我发现可以通过将函数内部的局部变量定义为local来防止这种情况:local var=xyz.

然后,在某些时候,我发现了一个线程(使用括号而不是大括号定义bash函数体),其中解释了使用括号来定义函数同样有效:

foo()
(
    ...
)
Run Code Online (Sandbox Code Playgroud)

这样做的结果是函数体在子shell中执行,这有利于函数具有自己的变量范围,这允许我在没有本地的情况下定义它们.由于具有函数局部范围似乎更有意义,并且比所有变量全局更安全,我立即问自己:

  • 为什么默认情况下使用大括号括起函数体而不是括号?

但是,我很快发现了在子shell中执行该函数的一个主要缺点,特别是从函数内部退出脚本不再起作用,而是迫使我在整个调用树中使用返回状态(如果是嵌套函数).这引出了我的后续问题:

  • 使用括号而不是大括号是否还有其他主要缺点(*)(这可能解释为什么大括号似乎更受欢迎)?

(*)我知道(从异常相关的讨论中我偶然发现),有些人认为明确使用错误状态比从任何地方退出要好得多,但我更喜欢后者.

显然这两种风格都有其优点和缺点.所以我希望你们中有些经验丰富的bash用户可以给我一些一般指导:

  • 我何时应该使用花括号来包围函数体,何时可以切换到括号?

编辑:从答案的转移

谢谢你的回答,我的脑袋现在对此更加清晰.所以我从答案中得到的是:

  • 坚持传统的花括号,如果只是为了不混淆脚本的其他潜在用户/开发者(如果整个身体被括在括号中,甚至使用括号).

  • 花括号的唯一真正缺点是可以更改父作用域中的任何变量,尽管在某些情况下这可能是一个优点.通过将变量声明为可以很容易地避免这种情况local.

  • 另一方面,使用括号可能会产生一些严重的不良影响,例如搞乱退出,导致杀死脚本的问题以及隔离变量范围.

bash function curly-braces parentheses

27
推荐指数
3
解决办法
6489
查看次数

VSCode 在自动完成功能时添加括号

是否可以调整 VSCode,以便在函数自动完成时使用它()而不是简单的函数名称编写?

例如,当我输入str并自动完成strlen我想要获取时strlen(),它可以节省相当多的时间。

autocomplete function parentheses visual-studio-code

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

在确定数组的大小时,括号会有所作为吗?

以下程序在gcc 4.8.2上两次打印相同的数字:

#include <stdio.h>

int main()
{
    char a[13];
    printf("sizeof a  is %zu\n", sizeof a );
    printf("sizeof(a) is %zu\n", sizeof(a));
}
Run Code Online (Sandbox Code Playgroud)

根据这篇reddit帖子,gcc在这方面并不符合标准,因为当数组到指针衰减没有发生时,括号表达式不在异常列表中.

这家伙是对的吗?这是相关的标准报价:

除非它是运算sizeof符或一元运算&符的操作数,或者是用于初始化字符数组数组的字符串文字,或者是用于初始化与元素类型兼容的数组的宽字符串文字,否则具有wchar_t的左值类型'array of type'被转换为一个表达式,其类型为'指向类型的指针',指向数组对象的初始成员而不是左值.

为了清楚起见,他认为(a)应该触发数组到指针的衰减,因为上面的列表中没有括号括起来(sizeof运算符,一元运算&符,字符串文字作为初始值).

c arrays sizeof parentheses language-lawyer

26
推荐指数
2
解决办法
993
查看次数

为什么用括号导入语句?

最近看到像这样的进口

from module import (function, another_function, 
                    another_function)
Run Code Online (Sandbox Code Playgroud)

看起来这样做是为了能够import通过多行来扩展语句.在这种情况下,我通常只是这样导入

from module import function, another_function, \
            another_function
Run Code Online (Sandbox Code Playgroud)

在这种情况下括号究竟做了什么,他们认为是不好的做法?

python import parentheses

25
推荐指数
1
解决办法
5216
查看次数

格式括号中的负数但不是$符号?

我已经在互联网上看到格式化带有$符号的括号的双重值,即.货币类型.

我正在寻找一种.NET格式的字符串来格式化

12345.67 = 12,345.67

-12345.67 = (12,345.67)
Run Code Online (Sandbox Code Playgroud)

.net vb.net parentheses negative-number

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

Haskell类型签名中括号的含义是什么?

fmap(Functor方法)的类型签名为例:

(a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)

与以下类型签名有何不同?

a -> b -> f a -> f b
Run Code Online (Sandbox Code Playgroud)

这两种类型的签名之间是否存在差异?

haskell types parentheses

22
推荐指数
3
解决办法
2228
查看次数