python 语法糖 持续更新中...

1. 赋值

a,b = b,a #  这样就完成了两个变量的交换
a, b = 3, 4 # 类似的赋值行为
a, b, c = 3, 4, 5 # 当然可以写更多

1.1 返回多个返回值

当然,自从c++11之后,tuple也被引入c++中了。

def fun() -> (float, int, bool):
    # process
    # ...
    return (arg1, arg2, arg3)

2. 三目运算符

c语言中有?:这个三目运算符,python中有以下语法与之对应:

a = b if b>0 else -b

相当于c语言的

a = b>0?b:-b;

3. with open

with open(file_name, encoding='utf-8') as f:
    print(f.read())

作为c语言出身的小白,看到以上写法不知有多兴奋,之前写python总是写成下边的形式,

f = open(file_name, 'r')
print(f.read())
f.cllose()

4. format

python 3的format是非常强大的,以下是个例子

'{:.2f} {:.3f}'.format(2.434,7.45354)
'{a:.2f} {b:.3f}'.format(a=2.434,b=7.45354)
'{} {}'.format(2.434,7.45354)
'{a:.2f} {b:.3f} {a} {a}'.format(a=2.434,b=7.45354)

在这里插入图片描述

5. 负序号

python中竟然有负数序号,倒数第一个序号为 -1 而倒数第二个序号为 -2。

s = r'hello world'
# s[-1] == 'd' would return true

6. 列表推导式(很强大的特性)

6.1 列表推导式

result = [obj.method() for obj in mylist]

如:

from math import sqrt
mylist = range(5)
result = [sqrt(obj) for obj in mylist]
result
Out[81]: [0.0, 1.0, 1.4142135623730951, 1.7320508075688772, 2.0]

6.2 生成器表达式

从下边的例子可以看出,生成器表达式生成的不是列表,而是迭代器,这一点与列表推导式不一样

from math import sqrt
mylist = range(5)
result = (sqrt(obj) for obj in mylist])
for i in result:
    print(i)

0.0
1.0
1.4142135623730951
1.7320508075688772
2.0

7. 有意思的循环

以下两个语句想必够用了

for item in mylist:
    print(item)
for inx, item in enumerate(mylist):
    print(inx, item) # 同时获取idex和元素

8. 连续不等式

c中我们这么写

if (a<5 && a>1) {
    // process
}

python中我们可以这么写

if 1<a<5:
    # process

也可以写更多

if 1<a<5<b<6>c<9:
    # process

9. 设置默认值

如果b为空,那么默认字符串给a

a=b or "this is default string"

猜你喜欢

转载自blog.csdn.net/iceboy314159/article/details/104882951