我来自PHP背景,想知道是否有办法在Python中执行此操作.
在PHP中你可以像这样用一块石头杀死2只鸟:
代替:
if(getData()){
$data = getData();
echo $data;
}
Run Code Online (Sandbox Code Playgroud)
我可以做这个:
if($data = getData()){
echo $data;
}
Run Code Online (Sandbox Code Playgroud)
您检查是否getData()存在,如果存在,则将其分配给一个语句中的变量.
我想知道在Python中是否有办法做到这一点?所以不要这样做:
if request.GET.get('q'):
q = request.GET.get('q')
print q
Run Code Online (Sandbox Code Playgroud)
避免写request.GET.get('q')两次.
在C++中,我经常使用以下模式:
while (int i = getNextElementPlease()) {
printf("%d\n", i);
}
Run Code Online (Sandbox Code Playgroud)
但是在python中我必须重复两次调用:
i = getNextElementPlease()
while (i):
print(i)
i = getNextElementPlease()
Run Code Online (Sandbox Code Playgroud)
如何避免重复getNextElementPlease?
在Python3.8 中有一个名为 walrus ( :=) 的新运算符,它可以在条件内分配新变量。我用 PHP 编写了一个简单的 TCP 套接字连接,我希望我的程序看起来更好。
PHP: Hypertext Preprocessor 中是否有类似的东西?
if ($data := socket_read ($socket, 1024)) {
echo $data;
}
Run Code Online (Sandbox Code Playgroud) 我是python的新手.在C/C++中,在while或if语句中,我经常进行变量赋值.以下是C++中的一个简单示例代码:
#include <iostream>
int Increment(const int x) {
return (x + 1);
}
int main(void) {
int x = 2, y;
while ((y = Increment(x)) > 2) {
std::cout << "y is larger than 2" << std::endl;
}
return (0);
}
Run Code Online (Sandbox Code Playgroud)
但是以下python代码不起作用:
#!/usr/bin/python
def Increment(x):
return x + 1
def main():
x= 2
while (y = Increment(x)) > 2:
print "y is larger than 2"
if __name__ == "__main__"
main()
Run Code Online (Sandbox Code Playgroud)
错误消息如下:
while (y = Increment(x)) > 2:
^
SyntaxError: invalid …Run Code Online (Sandbox Code Playgroud) 此函数查找数字中的位数
def getNumOfDigits(i):
num = i
count = 1
num = num // 10
while num != 0:
count += 1
num //= 10
return count
Run Code Online (Sandbox Code Playgroud)
如果我尝试修改while条件以将num除以10并检查它是否不等于0则会引发语法错误.为什么在python中这样呢?
def getNumOfDigits(i):
num = i
count = 1
while (num //= 10)!= 0:
count += 1
return count
Run Code Online (Sandbox Code Playgroud)