zoukankan      html  css  js  c++  java
  • python十大易错语法

    1. for - else

    不是 if 和 else 才是原配吗?for 和 else 也是一对,而且是合法的。

    for i in [1,2,3,4]:
        print(i)
    else:
        print(i, '我是else')
    

    结果:

    1
    2
    3
    4
    4 我是else
    

    如果在 for 和 else 之间(循环体内)有第三者 if 插足,也不会影响 for 和 else 的关系。因为 for 的级别比 if 高,else 又是一个攀附权贵的家伙,根本不在乎是否有 if,以及是否执行了满足 if 条件的语句。else 的眼里只有 for,只要 for 顺利执行完毕,else 就会屁颠儿屁颠儿地跑一遍:

    for i in [1,2,3,4]:
        if i > 2:
            print(i)
    else:
        print(i, '我是else')
    

    结果:

    3
    4
    4 我是else
    

    那么,如何拆散 for 和 else 这对冤家呢?只有当 for 循环被 break 语句中断之后,才会跳过 else 语句:

    for i in [1,2,3,4]:
        if i > 2:
            print(i)
            break
    else:
        print(i, '我是else')
    

    结果:

    3
    

    2. 一颗星(*)和两颗星(**)

    Python 函数支持默认参数和可变参数,一颗星表示不限数量的单值参数,两颗星表示不限数量的键值对参数。

    举例说明:
    设计一个函数,返回多个输入数值的和。我们固然可以把这些输入数值做成一个list传给函数,但这个方法,远没有使用一颗星的可变参数来得优雅:

    def multi_sum(*args):
        s = 0
        for item in args:
            s += item
        return s
    
    print(multi_sum(3,4,5))
    

    结果:

    12
    

    Python 函数允许同时全部或部分使用固定参数、默认参数、单值(一颗星)可变参数、键值对(两颗星)可变参数,使用时必须按照前述顺序书写。

    def do_something(name, age, gender='男', *args, **kwds):
        print('姓名:%s,年龄:%d,性别:%s'%(name, age, gender))
        print(args)
        print(kwds)
    
    do_something('xufive', 50, '男', 175, 75, math=99, english=90)
    

    结果:

    姓名:xufive,年龄:50,性别:男
    (175, 75)
    {'math': 99, 'english': 90}
    

    此外,一颗星和两颗星还可用于列表、元组、字典的解包,看起来更像C语言:

    >>> a = (1,2,3)
    >>> print(a)
    (1, 2, 3)
    >>> print(*a)
    1 2 3
    
    >>> b = [1,2,3]
    >>> print(b)
    [1, 2, 3]
    >>> print(*b)
    1 2 3
    
    >>> c = {'name':'xufive', 'age':51}
    >>> print(c)
    {'name': 'xufive', 'age': 51}
    >>> print(*c)
    name age
    
    >>> print('name:{name}, age:{age}'.format(**c))
    name:xufive, age:51
    

    https://blog.csdn.net/xufive/article/details/102856921

  • 相关阅读:
    一维数组
    do while循环(熟悉)
    while循环的概念和使用
    break关键字
    continue关键字
    for循环的概念与使用
    switchcase分支结构
    if else if else分支结构
    关于scanf()读取与返回值和回车键的问题
    WCF通过IIS寄宿服务
  • 原文地址:https://www.cnblogs.com/id88/p/14210868.html
Copyright © 2011-2022 走看看